.NET6使用微信小程序授權(quán)登錄獲取手機(jī)號(hào)
1.在appsettings配置你的小程序配置信息
//微信小程序信息配置
"WechatConfig": {
"appid": "", //小程序ID
"secret": "" //小程序秘鑰
},2.請(qǐng)求接口時(shí)先獲取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;
}
#endregion3.授權(quán)時(shí)獲取手機(jī)號(hào)
#region 獲取微信綁定手機(jī)號(hào)
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請(qǐng)求方式
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();
//簽發(fā)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 };
}
}
#endregion4.微信接口要求必須使用Post請(qǐng)求方法
#region 提交Post請(qǐng)求
/// <summary>
/// 提交Post請(qǐng)求
/// </summary>
/// <param name="parameterData">參數(shù)集合</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")
{
//先根據(jù)用戶請(qǐng)求的uri構(gòu)造請(qǐng)求地址
//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
//創(chuàng)建Web訪問對(duì)象
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
//把用戶傳過來的數(shù)據(jù)轉(zhuǎn)成“UTF-8”的字節(jié)流
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");
//發(fā)送請(qǐng)求
Stream stream = myRequest.GetRequestStream();
stream.Write(buf, 0, buf.Length);
stream.Close();
//通過Web訪問對(duì)象獲取響應(yīng)內(nèi)容
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
//通過響應(yīng)內(nèi)容流創(chuàng)建StreamReader對(duì)象,因?yàn)镾treamReader更高級(jí)更快
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有編碼問題就用這個(gè)方法
string returnData = reader.ReadToEnd();//利用StreamReader就可以從響應(yīng)內(nèi)容從頭讀到尾
reader.Close();
myResponse.Close();
return returnData;
}
#endregion小程序官方文檔
到此這篇關(guān)于.NET6使用微信小程序授權(quán)登錄獲取手機(jī)號(hào)的文章就介紹到這了,更多相關(guān).NET6小程序授權(quán)獲取手機(jī)號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- UNIAPP實(shí)現(xiàn)微信小程序登錄授權(quán)和手機(jī)號(hào)授權(quán)功能(uniapp做微信小程序)
- 微信小程序中獲取用戶手機(jī)號(hào)授權(quán)登錄詳細(xì)步驟
- uniapp微信小程序授權(quán)登錄并獲取手機(jī)號(hào)的方法
- 微信小程序登錄方法之授權(quán)登陸及獲取微信用戶手機(jī)號(hào)
- 微信小程序手機(jī)號(hào)驗(yàn)證碼登錄的項(xiàng)目實(shí)現(xiàn)
- 微信小程序獲取手機(jī)號(hào)授權(quán)用戶登錄功能
- 微信小程序手機(jī)號(hào)授權(quán)一鍵登錄功能實(shí)現(xiàn)代碼
相關(guān)文章
Visual Studio 2017開發(fā)環(huán)境的安裝圖文教程
Visual Studio 2017是微軟于2017年3月8日正式推出的新版本,是迄今為止 最具生產(chǎn)力 的 Visual Studio 版本。這篇文章主要介紹了Visual Studio 2017開發(fā)環(huán)境的安裝,需要的朋友可以參考下2017-11-11
asp.net AutoCompleteExtender的一個(gè)簡(jiǎn)單例子代碼
asp.net AutoCompleteExtender的一個(gè)簡(jiǎn)單例子代碼2009-12-12
把字符串轉(zhuǎn)為HtmlTable演示動(dòng)畫
怎樣將字符串轉(zhuǎn)為.cs頁面中的HtmlTable,在論壇上看到了這樣一個(gè)問題,想試著把它解決下,感興趣的朋友可以觀看下本文的動(dòng)畫,或許對(duì)你有所幫助2013-03-03
在 asp.net core 的中間件中返回具體的頁面的實(shí)現(xiàn)方法
這篇文章主要介紹了在 asp.net core 的中間件中返回具體的頁面的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
在ASP.Net中實(shí)現(xiàn)flv視頻轉(zhuǎn)換的代碼
在ASP.Net中實(shí)現(xiàn)flv視頻轉(zhuǎn)換的代碼...2007-09-09
Asp.net core實(shí)現(xiàn)PushStream視頻流推送
這篇文章介紹了Asp.net core實(shí)現(xiàn)PushStream視頻流推送的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
WPF中button按鈕同時(shí)點(diǎn)擊多次觸發(fā)click解決方法
這篇文章主要為大家詳細(xì)介紹了WPF中button按鈕同時(shí)點(diǎn)擊多次觸發(fā)click的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Visual Studio 2013更新內(nèi)容簡(jiǎn)介
這篇文章主要為大家分享了Visual Studio 2013更新內(nèi)容簡(jiǎn)介,感興趣的小伙伴們可以參考一下2016-05-05
asp.net Http異常eurl.axd出錯(cuò)信息解決方法
在IIS6中同時(shí)啟用了ASP.NET 2.0 和 ASP.NET 4.0 后,網(wǎng)站程序可能會(huì)出現(xiàn)如下錯(cuò)誤:“ System.Web.HttpException: Path ‘//eurl.axd/‘ was not found. ”2011-08-08

