獲取網頁存取授權
在取得用戶同意授權碼之後,就可以接著拿 openid 和 access token。
openid,筆者稱之為用戶唯一識別碼,access code 則是網頁存取授權碼,騰訊官方稱為網頁授權接口調用憑證。從騰訊的公眾平台開發文件可以知道,openid 是跟著用戶走的,每個用戶都有自己的識別碼,這個識別碼也是開發者在寫程式的過程中,區分微信用戶的途徑;而 access code 則有類似鑰匙的作用,有了 code 就能獲取 openid 和 access_token。
關鍵連結
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
參數說明
APPID:你所屬公眾號的appid,可登入公眾平台查看。
CODE:已獲取的用戶同意授權碼。
範例程式
後端的實作程式碼片段摘錄如下
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 的程式片段摘錄下來。
官方說明
http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html