.NET6使用微信小程序授權登錄,獲取手機號

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

  //微信小程序信息配置"WechatConfig": {"appid": "", //小程序ID"secret": "" //小程序秘鑰},

2.請求接口時先獲取Access_token

        #region 獲取小程序的Access_tokenpublic 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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38527.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38527.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38527.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux:shell腳本循環語句

目錄 一、循環含義 二、echo命令 三、for 3.1.將1到100累加求和 3.2批量添加用戶 3.3 根據IP地址檢查主機狀態 四、 while 和 until 4.1 猜價格 4.2 1-100求和 一、循環含義 循環含義 將某代碼段重復運行多次&#xff0c;通常有進入循環的條件和退出循環的條件 重復…

視頻匯聚平臺EasyCVR視頻監控播放平臺WebRTC流地址無法播放的問題解決方案

開源EasyDarwin視頻監控TSINGSEE青犀視頻平臺EasyCVR能在復雜的網絡環境中&#xff0c;將分散的各類視頻資源進行統一匯聚、整合、集中管理&#xff0c;在視頻監控播放上&#xff0c;TSINGSEE青犀視頻安防監控匯聚平臺可支持1、4、9、16個畫面窗口播放&#xff0c;可同時播放多…

Linux的ln命令

ln是link的縮寫,在Linux中 ln 命令的功能是為某一個文件在另外一個位置建立一個同步的鏈接&#xff0c;當我們需要在不同的目錄&#xff0c;用到相同的文件時&#xff0c;我們不需要在每一個需要的目錄下都放一個必須相同的文件&#xff0c;我們只要在某個固定的目錄&#xff0…

Ubuntu18.04.4裸機配置

下載虛擬機Ubuntu18.04.4 鏈接&#xff1a;https://pan.baidu.com/s/1jyucyUSXa9-Fw9ctuU87hA 提取碼&#xff1a;o42a –來自百度網盤超級會員V5的分享 VMware選擇鏡像安裝 設置你的用戶名&#xff0c;就像windows上登錄用戶一樣簡單 下一步……下一步……如此簡單 下載…

Floyd(多源匯最短路)

Floyd求最短路 給定一個 n 個點 m 條邊的有向圖&#xff0c;圖中可能存在重邊和自環&#xff0c;邊權可能為負數。 再給定 k 個詢問&#xff0c;每個詢問包含兩個整數 x 和 y&#xff0c;表示查詢從點 x 到點 y 的最短距離&#xff0c;如果路徑不存在&#xff0c;則輸出 impo…

每日一題 33搜素旋轉排序數組(二分)

題目 整數數組 nums 按升序排列&#xff0c;數組中的值 互不相同 。 在傳遞給函數之前&#xff0c;nums 在預先未知的某個下標 k&#xff08;0 < k < nums.length&#xff09;上進行了 旋轉&#xff0c;使數組變為 [nums[k], nums[k1], ..., nums[n-1], nums[0], nums[…

Fortinet數據中心防火墻及服務ROI超300%!Forrester TEI研究發布

近日&#xff0c;專注網絡與安全融合的全球網絡安全領導者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;聯合全球知名分析機構Forrester發布總體經濟影響獨立分析報告&#xff0c;詳細闡述了在企業數據中心部署 FortiGate 下一代防火墻&#xff08;NGFW&#xff09…

Django圖書商城系統實戰開發-實現商品管理

Django圖書商城系統實戰開發 - 實現商品管理 在本教程中&#xff0c;我們將使用Django框架來實現一個簡單的圖書商城系統&#xff0c;并重點討論如何實現商品管理功能。此外&#xff0c;我們還將介紹如何使用Markdown格式來寫博客&#xff0c;并將其集成到我們的圖書商城系統中…

緩存淘汰算法(LFU LRU FIFO)及進程的狀態和轉換

目錄 一、緩存淘汰算法 1.LFU&#xff08;Least Frequently Used&#xff09;最近最不常用算法 2.LRU&#xff08;Least Recently User&#xff09;最近最少使用算法 3.FIFO&#xff08;First in first out&#xff09;先進先出算法 二、進程的狀態和轉換 1.最基本的三種狀…

OpenCV圖像處理——模版匹配和霍夫變換

目錄 模版匹配原理實現 霍夫變換霍夫線檢測 模版匹配 原理 實現 rescv.matchTemplate(img,template,method)import numpy as np import cv2 as cv import matplotlib.pyplot as pltimgcv.imread(./汪學長的隨堂資料/6/模板匹配/lena.jpg) templatecv.imread(./汪學長的隨堂資…

UniApp 使用命令創建頁面的詳細指南

系列文章目錄 文章目錄 系列文章目錄前言一、安裝Uni-CLI二、創建頁面三、頁面創建命令四、頁面結構五、頁面使用總結 前言 UniApp是一款跨平臺的前端框架&#xff0c;可以用于開發同時運行在多個平臺&#xff08;如微信小程序、H5、App等&#xff09;的應用程序。本文將詳細介…

系統架構設計師---考試通關練習題

第一章 系統架構設計師概述 1 .以下()不是現代信息系統的架構的三個要素。 A.構件 B.模式 C.規劃 D.屬性 解析:現代信息系統的架構有三個要素,即構件、模式和規劃。 答案:D 2. 軟件系統架構是關于軟件系統的結構、行為和()的高級抽象。 A.構件 B.模式 C…

centos-stream-9 centos9 配置國內yum源 阿里云源

源配置 tips: yum配置文件路徑 /etc/yum.repos.d/centos.repo 1.備份源配置 [Very Important!]mv /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.backup2.Clean Cache: yum clean all3.Backup the Old CentOS-Base.repo If exist this file.cd /etc/yum.repos.…

使用chatGPT-4 暢聊量子物理學(三)

集合了人類智慧的照片&#xff0c;來自 1927 年舉行的第五屆索爾維國際會議。 Omer 什么是“物理系統在被測量之前不具有確定的屬性。量子力學只能預測給定測量的可能結果的概率分布" ChatGPT 這句話描述了量子力學中的一種基本原則&#xff0c;即“物理系統在被測量之前…

手寫線程池的過程與思考

線程池的抽象接口 public interface SelfThreadPool {// 提交任務到線程池void execute(Runnable runnable);//關閉void shutdown();//獲取線程池初始化的大小int getInitSize();//獲取線程池最大的大小int getMaxSize();// 獲取線程池核心線程數量,int getCoreSize();// 獲取…

世微AP2813 平均電流雙路降壓恒流驅動器 LED儲能電源驅動指示燈IC 可恒流可爆閃 可雙路恒流

產品描述 AP2813 是一款雙路降壓恒流驅動器,高效率、外圍簡單、內置功率管&#xff0c;適用于 5-80V 輸入的高精度降壓 LED 恒流驅動芯片。內置功率管輸出最大功率可達12W&#xff0c;最大電流 1.2A。AP2813 一路直亮&#xff0c;另外一路通過 MODE1 切換全亮&#xff0c;爆閃…

利用OpenCV光流算法實現視頻特征點跟蹤

光流簡介 光流&#xff08;optical flow&#xff09;是運動物體在觀察成像平面上的像素運動的瞬時速度。光流法是利用圖像序列中像素在時間域上的變化以及相鄰幀之間的相關性來找到上一幀跟當前幀之間存在的對應關系&#xff0c;從而計算出相鄰幀之間物體的運動信息的一種方法。…

大模型PEFT技術原理(二):P-Tuning、P-Tuning v2

隨著預訓練模型的參數越來越大&#xff0c;尤其是175B參數大小的GPT3發布以來&#xff0c;讓很多中小公司和個人研究員對于大模型的全量微調望而卻步&#xff0c;近年來研究者們提出了各種各樣的參數高效遷移學習方法&#xff08;Parameter-efficient Transfer Learning&#x…

css鼠標樣式 cursor: pointer

cursor: none; cursor:not-allowed; 禁止選擇 user-select: none; pointer-events:none;禁止觸發事件, 該樣式會阻止默認事件的發生&#xff0c;但鼠標樣式會變成箭頭

Hlang社區-前端社區宣傳首頁實現

文章目錄 前言頁面結構固定釘頭部輪播JS特效完整代碼總結前言 這里的話,博主其實也是今年參與考研的大軍之一,所以的話,是抽空去完成這個項目的,當然這個項目的肯定是可以在較短的時間內完成的。 那么廢話不多說,昨天也是干到1點多,把這個首頁寫出來了。先看看看效果吧:…