微信小程式獲取用戶唯一標識openid代碼,官方檔案關鍵點一筆帶過,網上找了半天基本都是按照官網檔案寫的攻略,用處不大。現在整理一份詳細的檔案,供小程式初學者學習。
第一步:首先是小程式端,代碼比較簡單,但是關鍵點卻不容易發現。app.js里,呼叫wx.login(),獲取code,然后呼叫wx.request,一定看好,url不是官方網站提供的“https://api.weixin.qq.com/sns/jscode2session”,這個地址小程式是沒法直接訪問的,必須有后臺的支持,就是你需要撰寫一個后臺程式,通過后臺代碼來訪問官方提供的網址,此處的url指向的就是你呼叫官方介面的后臺代碼,呼叫成功后,底部顯示了openid

第二步,小程式的url指向的介面地址代碼,是我自己撰寫的后臺程式,這里注意,官方介面有4個引數,這四個引數可以由小程式端傳值,也可以自己后臺復制,看自己需要。這4個引數分別是appid和secret(登錄官方后臺自己賬號獲取)、js_code,就是小程式端傳過來的code值,還有grant_type直接寫上authorization_code,即可。
我這里是C#代碼,用get方式訪問介面獲取資料,然后以json格式回傳給小程式端

除了openid之外,還有獲取用戶簡單資訊的方法,getuserinfo,這里代碼和官網一致,https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html#wxgetuserinfoobject,認真仔細閱讀
getUserInfo: function (cb) {
var that = this
if (this.globalData.userInfo) {
typeof cb == "function" && cb(this.globalData.userInfo)
} else {
//呼叫登錄介面
wx.login({
success: function (res) {
var code = res.code
if (res.code) {
//獲取用戶基本資訊
wx.getUserInfo({
success: function (res) {
that.globalData.userInfo = res.userInfo
that.globalData.rawData = res.rawData
that.globalData.signature = res.signature
that.globalData.encryptedData = res.encryptedData
that.globalData.iv = res.iv
typeof cb == "function" && cb(that.globalData.userInfo)
}
})
}
}
})
}
},
globalData: {
userInfo: null,
rawData: null,
signature: null,
encryptedData: null,
iv: null,
}
代碼檔案地址:提供了小程式端和C#后臺代碼,比較完整http://download.csdn.net/download/springpp1990/10244829
uj5u.com熱心網友回復:
一開始的確有點懵,但總體還算是簡單uj5u.com熱心網友回復:
下載后,修改自己的相關ID能否直接用?uj5u.com熱心網友回復:
感謝,很不錯的c#,可以實作!樓主的代碼有點小瑕疵,我改進了一點小程式端:
onLoad: function() {
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);
}
})
}
}
})
C#端:
[HttpGet]
public string login(string code)
{
string js_code = code.ToString();
string serviceAddress = "https://api.weixin.qq.com/sns/jscode2session?appid=wx361987b5ef220c26&secret=be34f824aaaf286979111d61ad7e3e64&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;
}
uj5u.com熱心網友回復:
樓上把appid secret都寫出來了真豪放uj5u.com熱心網友回復:
如何把得到的openId寫入資料庫?uj5u.com熱心網友回復:
魏本全軟體開發/ASP.NETBbs1,把獲得的opentid寫入到資料庫應該怎么寫?
uj5u.com熱心網友回復:
C#端:[HttpGet]
public string login(string code)
vs怎么新建這個檔案?請步驟下,謝謝!
uj5u.com熱心網友回復:
樓主寫的邏輯非常清楚,終于知道怎么通過微信登陸注冊用戶了。有兩點不明白,一是通過小程式登陸后得到的code(每次會變),來取openId,這個openId是每個微信用戶的永久唯一標識嗎?
二是如何獲得微信用戶的妮稱和電話呢?
uj5u.com熱心網友回復:
這個墳挖的,哎!現在世道變啦!小程式是不允許這樣后臺登錄了,必須開放用戶體驗,讓用戶自己主動登錄才可以。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/54657.html
標籤:微信開發
