最近在做小程式開發,小程式關于API請求訪問難點之一:微信小程式獲取用戶唯一標識openid,官方檔案實在是講的不詳細,初學者用處不大。把自己實際做專案的原始碼共享與大家,供小程式初學者學習。
第一步:小程式端代碼比較簡單:呼叫wx.login(),獲取臨時登陸憑證的code值(每次請求都是隨機值),
第二步:呼叫wx.request,重點:url值不是他人案例上的鏈接,這是你自己撰寫后臺C#程式封裝的API路徑(本地預覽是localhost之類的),通過后臺C#程式再來訪問官方提供的網址(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code),

第三步:把C#程式訪問網址的結果回傳給小程式就好了
具體代碼:
小程式端:
wx.login({
success(res) {
if (res.code) {
console.log("用戶登陸品證" + res.code);
wx.request({
url: 'http://localhost:59132/api/user',
data: {
code: res.code,
},
success(res) {
console.log("獲取openid" + res.data);
}
})
}
}
})
代碼決議:wx.login官網有詳細解說,固定格式固定語法,直接照搬。注:我這邊是url路徑就是Visual Studio本地預覽的網址,也就是該C#原始碼的路徑,不懂的可以看C# MVC的API創建與訪問
C#程式端:
[HttpGet]
public string login(string code)
{
string js_code = code.ToString();
string serviceAddress = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=" + js_code + "&grant_type=authorization_code";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
代碼決議:這里的代碼也是固定語法格式直接照搬。可以看出這段代碼是回傳一個叫retString的值,這個值里包含openid等資訊。
這個代碼開始傳入一個值,就是小程式端的code值,通過url傳過來。之前說的https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code網址就寫在這里面用程式讀取。這個網址里包含三個變數,一個是code值,一個是appId,一個是appSecret,code值小程式傳過來了,appId和appSecret在我們的小程式平臺的設定里有直接換掉鏈接里的APPID和SECRET值,這兩個寫死就好了。執行結果

初學者理解起來可能困難,有不懂的可以給我留言。共同進步!
uj5u.com熱心網友回復:
需要把opentid寫入到資料庫該怎么寫轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/74140.html
標籤:微信開發
上一篇:求《Android通用框架設計與完整電商APP開發》的json介面檔案
下一篇:微信會員卡獲取手機號
