overview
step1. 配置回調域名
登陸微信公眾平臺,菜單“設置”→“公眾號設置”→功能設置→網頁授權域名
微信公眾平臺開發.png
【定義】授權回調頁面域名:用戶在網頁授權頁同意授權給公眾號后,微信會將授權數據傳給一個回調頁面,回調頁面需在此域名下,以確保安全可靠。
以上定義似乎會把人帶入誤區,我一開始被整懵了。配了個回調地址,其實不用,只需要配置授權訪問的域名就ok了,這里我配置的是testpcenter.shenbianhui.cn。注意,要保證域名可訪問并且要把MP_verify_****.txt放到站點相應的目錄下,否則點擊“確認”按鈕會提示的。
step2. 構造微信用戶請求的url
https://open.weixin.qq.com/connect/oauth2/authorize?appid=@APPID&redirect_uri=@redirectUri&response_type=code&scope=snsapi_base&state=1#wechat_redirect
頁面URL中的scope=snsapi_base 表示應用授權作用域為 不彈出授權頁面,直接跳轉,只獲取用戶openid
這里我配置的redirect_uri是http://testpcenter.shenbianhui.cn/TCP/WeixinJSPay.aspx
step3. 返回回調頁面如下
http://testpcenter.shenbianhui.cn/TCP/WeixinJSPay.aspx?code=001bxIJx1Pi1ge0bZpLx1AAAJx1bxIJb&state=1
這里獲得到了code
step4. 再使用code獲取OpenID
url如下:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=@APPID&secret=@APPSECRET&code=@code&grant_type=authorization_code
返回如下
{
"access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5Y6vey3dgDtFki5C8r6D0E6mSVxxtb8BjLMhb-mCyT_Yg",
"expires_in": 7200,
"refresh_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5YBkF0ZUH1Ew8Iqea6x_itq13sYDqP1D7ieaDy9u2AHHw",
"openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"scope": "snsapi_base"
}
step5. 獲取全局Access Token
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=@APPID&secret=@APPSECRET
返回結果:
{
"access_token": "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ",
"expires_in": 7200
}
step6. 最后,使用全局ACCESS_TOKEN和OpenID就可以獲取微信用戶的詳細信息了
https://api.weixin.qq.com/cgi-bin/user/info?access_token=@ACCESS_TOKEN&openid=@OPENID
返回如下:
{
"subscribe": 1,
"openid": "o48_Ct5YigM7JDZ6x3Havr4kgzQQ",
"nickname": "UNION",
"sex": 1,
"language": "zh_CN",
"city": "朝陽",
"province": "北京",
"country": "中國",
"headimgurl": "http://wx.qlogo.cn/mmopen/IYiampJQbm5TEicYAhWAMAicSVDVRGYFAiamB4qyq3mUWmzT1zNQFzYnBMTNmicljmm9GDSX2Hhbs6oMM6BezDLyZibfFrVuZ3D7sW/0",
"subscribe_time": 1443007389,
"remark": "",
"groupid": 0,
"tagid_list": []
}
至此,成功獲得用戶基本信息。
這種適合已經有OAuth2.0網頁授權的服務號在網頁中使用,且不會彈出“微信登錄”頁面。減少給用戶的打擾。
ref:微信網頁授權官方文檔 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842