当前位置: 代码网 > it编程>编程语言>Asp.net > .NET6使用微信小程序授权登录获取手机号

.NET6使用微信小程序授权登录获取手机号

2024年05月18日 Asp.net 我要评论
1.在appsettings配置你的小程序配置信息 //微信小程序信息配置 "wechatconfig": { "appid": "", //小程序id "secret": "" //

1.在appsettings配置你的小程序配置信息

  //微信小程序信息配置
  "wechatconfig": {
    "appid": "", //小程序id
    "secret": "" //小程序秘钥
  },

2.请求接口时先获取access_token

        #region 获取小程序的access_token
        public object getaccess_token(string appid, string secret)
        {
            string strurl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret;
            httpwebrequest req = (httpwebrequest)httpwebrequest.create(strurl);
            req.method = "get";
            req.contenttype = "textml;charset=utf-8";
            httpwebresponse response = (httpwebresponse)req.getresponse();
            stream myresponsestream = response.getresponsestream();
            streamreader mystreamreader = new streamreader(myresponsestream, encoding.utf8);
            string jsondata = mystreamreader.readtoend();
            mystreamreader.close();
            myresponsestream.close();
            string jsonsr = jsondata;
            jobject jsons = jobject.parse(jsonsr);
            string accesstoken = jsons["access_token"].tostring();
            return accesstoken;
        }
        #endregion

3.授权时获取手机号

        #region 获取微信绑定手机号
        public  object getphonenumber(string code, string appid, string secret)
        {
            string errcode = "";
            try
            {
                var accesstoken = getaccess_token(appid, secret);
                string serviceaddress = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + accesstoken;
                jobject codes = new jobject();
                codes["code"] = code;
                string senddata = jsonconvert.serializeobject(codes);
                //换成post请求方式
                string jsonstring = urlpost(senddata, serviceaddress);
                dynamic model = jtoken.parse(jsonstring) as dynamic;
                jobject json = jobject.parse(jsonstring);
                errcode = json["errcode"].tostring();
                string purephonenumber = json["phone_info"]["phonenumber"].tostring();
                //签发token
                //string token;
                //_authenservice.isauthenticated(code, out token);
                return new { code = 200, msg = "获取成功", tel = purephonenumber, token = token };
            }
            catch (exception e)
            {
                return new { code = 0, msg = "获取失败" + e.message };
            }
        }
        #endregion

4.微信接口要求必须使用post请求方法

 #region 提交post请求
        /// <summary>
        /// 提交post请求
        /// </summary>
        /// <param name="parameterdata">参数集合</param>
        /// <param name="serviceurl">url</param>
        /// <param name="contenttype"></param>
        /// <param name="accept"></param>
        /// <returns></returns>
        public static string urlpost(string parameterdata, string serviceurl, string contenttype = "application/json", string accept = "application/json")
        {
            //先根据用户请求的uri构造请求地址
            //string serviceurl = string.format("{0}/{1}", this.baseuri, uri);
            //创建web访问对象
            httpwebrequest myrequest = (httpwebrequest)webrequest.create(serviceurl);
            //把用户传过来的数据转成“utf-8”的字节流
            byte[] buf = system.text.encoding.getencoding("utf-8").getbytes(parameterdata);
            myrequest.method = "post";
            //myrequest.accept = "application/json";
            //myrequest.contenttype = "application/json";  // //content-type: application/x-www-form-urlencoded 
            myrequest.automaticdecompression = decompressionmethods.gzip;
            myrequest.accept = accept;
            //myrequest.contenttype = contenttype;
            myrequest.contenttype = "application/json; charset=utf-8";
            myrequest.contentlength = buf.length;
            myrequest.maximumautomaticredirections = 1;
            myrequest.allowautoredirect = true;
            //myrequest.headers.add("content-type", "application/json");
            //myrequest.headers.add("accept-encoding", "gzip");
            //myrequest.headers.add("accept-charset", "utf-8");
            //发送请求
            stream stream = myrequest.getrequeststream();
            stream.write(buf, 0, buf.length);
            stream.close();
            //通过web访问对象获取响应内容
            httpwebresponse myresponse = (httpwebresponse)myrequest.getresponse();
            //通过响应内容流创建streamreader对象,因为streamreader更高级更快
            streamreader reader = new streamreader(myresponse.getresponsestream(), encoding.utf8);
            //string returnxml = httputility.urldecode(reader.readtoend());//如果有编码问题就用这个方法
            string returndata = reader.readtoend();//利用streamreader就可以从响应内容从头读到尾
            reader.close();
            myresponse.close();
            return returndata;
        }
        #endregion

小程序官方文档

https://developers.weixin.qq.com/miniprogram/dev/openapidoc/user-info/phone-number/getphonenumber.html

到此这篇关于.net6使用微信小程序授权登录获取手机号的文章就介绍到这了,更多相关.net6小程序授权获取手机号内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com