一忍些、內(nèi)嵌二維碼掃碼登錄
1.在網(wǎng)頁(yè)中引入JS
文件
http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js
2.在需要使用微信登錄的地方實(shí)例以下JS
對(duì)象
// 1號(hào)店示例二維碼
var obj = new WxLogin({
self_redirect:false,
id:"login_container",
appid: "wxbdc5610cc59c1631",
scope: "snsapi_login",
redirect_uri: encodeURIComponent("http://"+window.location.host+"/..."),
state: Math.ceil(Math.random()*1000),
style: "black",
href: ""
});
參數(shù) | 是否必須 | 說(shuō)明 |
---|---|---|
self_redirect | 否 | 跳轉(zhuǎn)到redirect_uri的方式 |
id | 是 | 顯示二維碼的容齊 |
appid | 是 | 應(yīng)用唯一標(biāo)識(shí) |
socpe | 是 | 應(yīng)用授權(quán)作用域 |
redirect_uri | 是 | 重定向地址 |
state | 否 | 保持請(qǐng)求和回調(diào)狀態(tài) |
style | 否 | 二維碼樣式蒋情,black\white |
href | 否 | 自定義樣式鏈接 |
返回說(shuō)明:
- 用戶授權(quán)后盏缤,將會(huì)在重定向到redirect_uri的網(wǎng)址上誓竿,并且?guī)?code>code和
state
參數(shù)
redirect_uri?code=CODE&state=STATE
- 若用戶禁止授權(quán)纳猫,則重定向后不會(huì)帶上
code
參數(shù)婆咸,僅會(huì)帶上state
參數(shù)
redirect_uri?state=STATE
3.使用通過(guò)以上請(qǐng)求獲取到的code
來(lái)獲取access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
參數(shù) | 是否必須 | 說(shuō)明 |
---|---|---|
appid | 是 | 應(yīng)用唯一標(biāo)識(shí) |
secret | 是 | 應(yīng)用密鑰 |
code | 是 | 上一步獲取的code |
grant_type | 是 | authorization_code |
正確的返回結(jié)果:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
參數(shù) | 說(shuō)明 |
---|---|
access_token | 接口調(diào)用憑證 |
expires | 超時(shí)時(shí)間 |
refresh_token | 用戶刷新accrss_token |
openid | 授權(quán)用戶唯一標(biāo)識(shí) |
scope | 授權(quán)作用域 |
unionid | 網(wǎng)站應(yīng)用已獲得用戶授權(quán)時(shí)才會(huì)出現(xiàn)該字段 |
錯(cuò)誤返回結(jié)果樣例:
{"errcode":40029,"errmsg":"invalid code"}
刷新access_token有效期:
1. 若access_token已超時(shí),那么進(jìn)行refresh_token會(huì)獲取一個(gè)新的access_token芜辕,新的超時(shí)時(shí)間尚骄;
2. 若access_token未超時(shí),那么進(jìn)行refresh_token不會(huì)改變access_token侵续,但超時(shí)時(shí)間會(huì)刷新倔丈,相當(dāng)于續(xù)期access_token。
4.獲取用戶信息
/// http請(qǐng)求方式: GET
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
正確返回結(jié)果:
{
"openid":"OPENID",
"nickname":"NICKNAME",
"sex":1,
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"privilege":[
"PRIVILEGE1",
"PRIVILEGE2"
],
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
unionid
是用戶統(tǒng)一標(biāo)識(shí)状蜗,針對(duì)一個(gè)賬號(hào)下的應(yīng)用需五,該標(biāo)識(shí)是唯一的≡玻可以保存unionid
以便在不用應(yīng)用中進(jìn)行信息互通