在取得用戶同意授權碼之後,就可以接著拿 openid 和 access token。
openid 筆者稱之為用戶唯一識別碼,access code 則是網頁存取授權碼。從騰訊的公眾平台開發文件可以知道,openid 是跟著用戶走的,每個用戶都有自己的識別碼,這個識別碼也是開發者在寫程式的過程中,區分微信用戶的途徑;而 access code 則有類似鑰匙的作用,有了這個和 openid 就能獲取用戶資訊,要取得用戶識別碼和網頁存取授權碼,最關鍵的地方在這個網址:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
同樣看到網址中上色的部份,小寫 code 是參數,大寫 CODE 就是你在上個頁面獲取的用戶同意授權碼。底下附上獲取 openid 和 access token 的後端範例程式碼:
private void GetOpenidAndAccessToken(string code) { try { wx_userweixin wxuBll = new wx_userweixin(); //构造获取openid及access_token的url WxPayData data = new WxPayData(); data.SetValue("appid", wxuBll.GetAppId(wid)); data.SetValue("code", code); data.SetValue("grant_type", "authorization_code"); data.SetValue("secret", wxuBll.GetAppSecret(wid)); string url = "https://api.weixin.qq.com/sns/oauth2/access_token?" + data.ToUrl(); //请求url以获取数据 string result = HttpService.Get(url); //保存access_token,用于收货地址获取 JsonData jd = JsonMapper.ToObject(result); access_token = (string)jd["access_token"]; //获取用户openid openid = (string)jd["openid"]; } catch (Exception ex) { throw new WxPayException(ex.ToString()); } }
由於目前在使用中的微信開發案例,整體方案的架構,切割的挺細,而且還搭上樣板引擎,因此為了避免太多無關緊要的程式碼占用篇幅,這裡就暫且將處理 openid 和 acess code 的程式片段摘錄下來。