參考文檔:api
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN微信
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316518&token=&lang=zh_CNsession
微信開放平臺裏面的文檔已經說明的很詳細了。這裏再用實例補充下。app
1.發送請求code
微信登陸的請求連接:https://open.weixin.qq.com/connect/qrconnect?appid=12312312312312&redirect_uri=www.baidu.com&response_type=code&scope=snsapi_login&state=3072355978#wechat_redirectcsrf
參數說明:token
appid:應用惟一標識,必填接口
redirect_uri:重定向地址,須要進行UrlEncode,必填作用域
response_type: code,必填文檔
scope:應用受權做用域,擁有多個做用域用逗號(,)分隔,網頁應用目前僅填寫snsapi_login便可,必填
state:用於保持請求和回調的狀態,受權請求後原樣帶回給第三方。該參數可用於防止csrf攻擊(跨站請求僞造攻擊),建議第三方帶上該參數,可設置爲簡單的隨機數加session進行校驗,非必填
用戶容許受權後,將會重定向到redirect_uri的網址上,而且帶上code和state參數:www.baidu.com?code=CODE&state=STATE
若用戶禁止受權,則重定向後不會帶上code參數,僅會帶上state參數:www.baidu.com?state=STATE
第二步:經過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,必填
正確的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE","unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
參數說明:
access_token:接口調用憑證
expires_in: access_token接口調用憑證超時時間,單位(秒)(目前爲2個小時)
refresh_token: 用戶刷新access_token
openid: 受權用戶惟一標識
scope: 用戶受權的做用域,使用逗號(,)分隔
unionid: 只有在用戶將公衆號綁定到微信開放平臺賬號後,纔會出現該字段。
access_token是調用受權關係接口的調用憑證,因爲access_token有效期(目前爲2個小時)較短,當access_token超時後,可使用refresh_token進行刷新。refresh_token擁有較長的有效期(30天),當refresh_token失效的後,須要用戶從新受權。
獲取第一步的code後,請求如下連接進行refresh_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
參數說明:
appid:應用惟一標識,必填
grant_type:填refresh_token,必填
refresh_token:填寫經過access_token獲取到的refresh_token參數,必填
正確的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
}
第三步:經過access_token調用接口
獲取access_token後,進行接口調用,有如下前提:
1. access_token有效且未超時;
2. 微信用戶已受權給第三方應用賬號相應接口做用域(scope)。