微信服務號和第三方平臺對接(前端)
阿新 • • 發佈:2018-12-28
微信公眾號:
1、服務號(每個月只能推送4篇文章,申請收費,更多高階功能:自定義選單等,)
2、訂閱號(每天都可以推送文章,申請免費)
訊息出現的位置不同,訂閱號統一在微信訂閱號模組下管理。
二者共用一種對接方式。
一、引導使用者開啟授權頁面
window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect'
引數說明:
appid | 必填 | 公眾號的唯一標識 |
redirect_uri | 必填 | 授權後重定向的回撥連結地址, 請使用 urlEncode 對連結進行處理 |
response_type | 必填 | 返回型別,請填寫code |
scope | 必填 | 應用授權作用域,snsapi_base (不彈出授權頁面,直接跳轉,只能獲取使用者openid),snsapi_userinfo (彈出授權頁面,可通過openid拿到暱稱、性別、所在地。並且, 即使在未關注的情況下,只要使用者授權,也能獲取其資訊 |
state | 非必填 | 重定向後會帶上state引數,開發者可以填寫a-zA-Z0-9的引數值,最多128位元組 |
#wechat_redirect | 必填 | 無論直接開啟還是做頁面302重定向時候,必須帶此引數 |
二、回撥之後的處理
使用者在授權頁面如果點選了同意授權按鈕,頁面會跳轉到 redirect_uri/?code=CODE&state=STATE;
這裡就可以在路由上拿到最重要的引數code;
code說明 : code作為換取access_token的票據,每次使用者授權帶上的code將不一樣,code只能使用一次,5分鐘未被使用自動過期。
獲取code後,請求以下連結獲取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
正確時返回的JSON資料包如下:
{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE" }
錯誤時微信會返回JSON資料包如下(示例為Code無效錯誤):
{"errcode":40029,"errmsg":"invalid code"}
三、獲取使用者資訊
引數既然都拿到了,那麼就開始獲取使用者資訊了。
官方提醒:由於公眾號的secret和獲取到的access_token安全級別都非常高,必須只儲存在伺服器,不允許傳給客戶端。後續重新整理access_token、通過access_token獲取使用者資訊等步驟,也必須從伺服器發起
也就是說access_token獲取資訊的步驟要在後端進行,因此前後端如果有需要,可額外新增令牌token作為通訊的標識。
http:GET(請使用https協議) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
附:官方文件地址