一、基礎接口access_token
憑據 access_token 是公衆號的全局唯一接口調用憑據,公衆號調用各接口時都需使用 access_token 作爲認證要素
獲取到的 access_token 有效期爲2個小時,且獲取接口的調用次數有限制,需要存儲複用並定時刷新,公衆平臺會保證在刷新的5分鐘內新老 access_token 都可用實現業務的平滑過渡
公衆號在調用接口獲取 access_token 時,需要提前將服務器的 IP 地址添加到微信公衆平臺的基本配置的 IP 白名單中,小程序無需配置 IP 白名單
- 請求說明
參數名稱 | 是否必須 | 說明 |
grant_type | 是 | 獲取 access_token 填寫 client_credential |
appid | 是 | 第三方用戶唯一憑證 |
secret | 是 |
第三方用戶唯一憑證密鑰,即 appsecret |
- 返回說明
參數名稱 | 參數說明 |
access_token | 獲取到的基礎接口憑證 |
expires_in | 憑證有效時間,單位:秒 |
/************成功示例************/
{
"access_token": "22_AfDy6E_UokcJ3GGrWwhcyEr5r-LN0T7aVmN74VDfrZmw7eeiXmMWb7AU6Z9mYq7Ey5Nggl82bSPn",
"expires_in": 7200
}
/************失敗示例************/
{
"errcode": 40013,
"errmsg": "invalid appid"
}
二、網頁授權access_token
用戶在微信客戶端中訪問第三方網頁,公衆號可以通過微信網頁授權機制,來獲取用戶基本信息,進而實現業務邏輯
微信網頁授權是通過 OAuth2.0 機制實現的,在用戶授權給公衆號後,公衆號可以獲取到一個網頁授權特有的接口調用憑證,即網頁授權 access_token,通過網頁授權 access_token 可以進行授權後接口調用,如獲取用戶基本信息
網頁授權 access_token 需要通過 code 換取,同時返回的還有 openid 即用戶唯一標識;返回報文類型爲 JSON 類型
- 請求說明
參數名稱 | 是否必須 | 參數說明 |
appid | 是 | 公衆號的唯一標識 |
secret | 是 | 公衆號的appsecret |
code | 是 | 填寫code參數,見三 |
grant_type | 是 | 填寫爲authorization_code |
- 返回說明
參數名稱 | 參數說明 |
access_token | 網頁授權接口調用憑證。注意:此 access_token 與基礎接口的 access_token 不同 |
expires_in | access_token 接口調用憑證超時時間,單位(秒) |
refresh_token | 用戶刷新 access_token |
openid | 用戶唯一標識。注意:用戶在未關注公衆號時訪問也會產生一個唯一的OpenID |
scope | 用戶授權的作用域,使用逗號(,)分隔 |
/************成功示例************/
{
"access_token": "22_qlj-5sxlhqQSykf2eW2OpIAGXoxx_JBlDmkBmhb6H9QXhnBw_mPjsYqDt18C-hwAwdWbf0N",
"expires_in": 7200,
"refresh_token": "22_E7O3tE50OmaLI_7-JLEgbqFCflsfwvqR0-6nKMsOjrsvygnz4GcSDjCKDS4hGnMvi_eE3c",
"openid": "ov5yQ8_ILc_--TfUa-IzuIL-B5Ok",
"scope": "snsapi_userinfo"
}
/************失敗示例************/
{"errcode":40029,"errmsg":"invalid code"}
三、網頁授權前置code
在獲取網頁授權 access_token 時,需要先獲取 code 做爲票據。每次用戶授權後返回的 code 都是不一樣,一個 code 只能使用一次,且5分鐘未被使用將自動過期
以 snsapi_base 爲 scope 發起的網頁授權,是用來獲取進入頁面的用戶的 openid 的,這種授權是靜默授權並自動跳轉到 redirect_uri 指定的回調頁
以 snsapi_userinfo 爲 scope 發起的網頁授權,是用來獲取用戶的基本信息的。但這種授權需要用戶手動同意,且由於用戶同意過,所以無須關注就可在授權後獲取該用戶的基本信息
獲取 code 的請求必須在微信瀏覽器內發送,在靜默授權或用戶確認後,公衆平臺將自動跳轉請求到 redirect_uri 指定的回調地址
- 請求說明
參數名稱 | 是否必須 | 參數說明 |
appid | 是 | 公衆號的唯一標識 |
redirect_uri | 是 | 授權後重定向的回調鏈接地址。使用 urlEncode 對鏈接進行處理 |
response_type | 是 | 返回類型,請填寫code |
scope | 是 | 應用授權作用域,snsapi_base 或 snsapi_userinfo |
state | 否 | 重定向後會帶上state參數,可以填寫a-zA-Z0-9的參數值,最多128字節 |
#wechat_redirect | 是 | 無論直接打開還是做頁面302重定向時候,必須帶此參數 |
- 回調說明
參數名稱 | 參數說明 |
code | 換取 網頁授權 access_token 的票據 |
state | 官方回調的保留域,回調跳轉時原樣攜帶返回 |
param | 自定義的參數名及其參數值,回調跳轉時原樣攜帶返回 |
http://demo.xl.com/wx/oauth/login?param=value&code=071mv17I1Fikw00a5N8I19KM6I1mv17J&state=10001
四、網頁開發jsapi_ticket
微信 JS-SDK 是微信公衆平臺面向網頁開發者提供的基於微信內的網頁開發工具包,通過JS-SDK可藉助微信使用拍照、選圖、語音、位置等手機系統的能力,同時可以直接使用分享、掃一掃、卡券、支付等微信特有的能力
jsapi_ticket 是公衆號調用 JS-SDK 接口的票據,所有需要使用 JS-SDK 的頁面都必須先通過 wx.config 注入權限驗證配置,而配置中的 signature 字段的生成則需要 jsapi_ticket 的參與
獲取 jsapi_ticket 需要通過基礎接口 access_token 作爲票據,獲取接口的調用次數有限制,需要存儲複用並定時刷新,獲取到的 jsapi_ticket 有效期爲7200秒,接口返回類型爲 JSON 類型
- 請求說明
參數名稱 | 是否必須 | 參數說明 |
type | 是 | 請求類型,請填寫 jsapi |
access_token | 是 | 基礎接口 access_token。見一 |
- 返回說明
參數名稱 | 參數說明 |
errcode | 錯誤代碼 |
errmsg | 錯誤消息 |
ticket | 網頁開發工具包 JS-SDK 接口的調用票據 |
expires_in | 憑證有效時間,單位:秒 |
{
"errcode": 0,
"errmsg": "ok",
"ticket": "LIKLckvwlJT9cWIhEQTwfIn035troj3P-aU7eHjdlobrTrMGEwUne8ON3n2GlJogGlKpo46nE4ZPw3qc7w",
"expires_in": 7200
}
附、微信測試公衆號
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login