微信公衆號網頁受權

微信網頁受權

 

若是用戶在微信客戶端中訪問第三方網頁,公衆號能夠經過微信網頁受權機制,來獲取用戶基本信息,進而實現業務邏輯。php

 

具體而言,網頁受權流程分爲四步:web

一、引導用戶進入受權頁面贊成受權,獲取codeapi

二、經過code換取網頁受權access_token(與基礎支持中的access_token不一樣)安全

三、若是須要,開發者能夠刷新網頁受權access_token,避免過時服務器

四、經過網頁受權access_token和openid獲取用戶基本信息(支持UnionID機制)微信

 

第一步:用戶贊成受權,獲取codeapp

引導用戶進入受權頁測試

 

參考連接(請在微信客戶端中打開此連接體驗):
scope爲snsapi_base
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
scope爲snsapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&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重定向時候,必須帶此參數


錯誤返回碼說明以下:ui

 

返回碼 說明
10003 redirect_uri域名與後臺配置不一致
10004 此公衆號被封禁
10005 此公衆號並無這些scope的權限
10006 必須關注此測試號
10009 操做太頻繁了,請稍後重試
10010 scope不能爲空
10011 redirect_uri不能爲空
10012 appid不能爲空
10013 state不能爲空
10015 公衆號未受權第三方平臺,請檢查受權狀態
10016 不支持微信開放平臺的Appid,請使用公衆號Appid

 

第二步:經過code換取網頁受權access_tokenurl

首先請注意,這裏經過code換取的是一個特殊的網頁受權access_token,與基礎支持中的access_token(該access_token用於調用其餘接口)不一樣。公衆號可經過下述接口來獲取網頁受權access_token。若是網頁受權的做用域爲snsapi_base,則本步驟中獲取到網頁受權access_token的同時,也獲取到了openid,snsapi_base式的網頁受權流程即到此爲止。

尤爲注意:因爲公衆號的secret和獲取到的access_token安全級別都很是高,必須只保存在服務器,不容許傳給客戶端。後續刷新access_token、經過access_token獲取用戶信息等步驟,也必須從服務器發起。

請求方法

獲取code後,請求如下連接獲取access_token:  https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

參數說明

參數 是否必須 說明
appid 公衆號的惟一標識
secret 公衆號的appsecret
code 填寫第一步獲取的code參數
grant_type 填寫爲authorization_code

返回說明

正確時返回的JSON數據包以下:

{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE" }
參數 描述
access_token 網頁受權接口調用憑證,注意:此access_token與基礎支持的access_token不一樣
expires_in access_token接口調用憑證超時時間,單位(秒)
refresh_token 用戶刷新access_token
openid 用戶惟一標識,請注意,在未關注公衆號時,用戶訪問公衆號的網頁,也會產生一個用戶和公衆號惟一的OpenID
scope 用戶受權的做用域,使用逗號(,)分隔

錯誤時微信會返回JSON數據包以下(示例爲Code無效錯誤):

{"errcode":40029,"errmsg":"invalid code"}

 配置回調地址

 

 

相關文章
相關標籤/搜索