微信openId是微信公眾號和用戶相互綁定的唯一標識
獲取微信openId
第一步:填寫服務器配置
url必須以http://或https://開頭,支持80端口和443端口
Token是服務器端特定驗證字符串
EncodingAESKey是隨機校驗字符串
消息加密形式可選明文和密文
驗證通過后即可通過微信公眾號訪問第三方服務器
第二步:請求微信服務器獲取用戶code
訪問地址? https://open.weixin.qq.com/connect/oauth2/authorize
參數
appid? 必填字段? 公眾號的唯一標識
redirect_url? 必填字段? 授權后重定向的回調鏈接地址,請使用urlEncode對鏈接進行處理
response_type? 必填字段? 返回類型,請填寫code
scope? 必填字段 應用授權作用域,snsapi_base(不彈出授權頁面)或snsapi_userinfo(彈出授權頁面)
state? 選填字段? 重定向后會帶上state參數,開發者可以填寫a-zA-Z0-9的參數值,最多128字節
請求實例:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx********as6d&redirect_uri=http%3a%2f%2feip.hljtx.com%2fsafefood%2fwechat%2fgetOpenId.do&response_type=code&scope=snsapi_userinfo&state=123
回調路徑 http://eip.hljtx.com/safefood/wechat/getOpenId.do 必須是和第一步設置的服務器域名相同
通過回調第三方服務器獲取到code
第三步:請求微信服務器獲取用戶openId
獲取微信回調code后,需再次請求微信服務器
訪問地址? https://api.weixin.qq.com/sns/oauth2/access_token
參數
appid? 必填字段? 公眾號的唯一標識
secret? 必填字段? 公眾號的appsecret
code? 必填字段? 填寫第二步獲取的code參數
grant_type? 必填字段? authorization_code
尤其注意:由于公眾號的secret和獲取到的access_token安全級別都非常高,必須只保存在服務器,不允許傳給客戶端。后續刷新access_token、通過access_token獲取用戶信息等步驟,也必須從服務器發起。
我們必須在服務器端進行http請求
請求成功后獲取到微信服務器返回的JSON
正確時返回的JSON數據包如下:
{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID","scope":"SCOPE" }
解析JSON數據包可獲取到openId及access_token
注意:access_token有效時間為2小時,后期后需要重新刷新