接入微信OAuth2.0登錄流程

1. 到微信開放平臺 ,先註冊一個開發者帳號,再申請一個網頁應用,填入公司網站信息,主要包括網站域名和回調地址,如 網站域名:www.baidu.com回調地址:http://www.baidu.com/login.htm

2. 審覈通過後,可以訪問這個鏈接獲取到微信登錄的二維碼:

https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect

這是一號店的微信登錄地址,appid 和 appsecret 還有redirect_uri替換成你自己的,state參數是做校驗的,可以隨意寫。
如果不想跳轉到新的頁面,可以使用第二種模式,內嵌js執行

  1. 引入js
<script src="https://res.wx.qq.com/connect/zh_CN/htmledition>/js/jquery.min.js"></script>
<script  src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
  1. html 部分
<div id="wx_login_container"></div>
  1. js實例
<script>

$(document).ready(function()
{
   var obj = new WxLogin({
       self_redirect: true,
       id:"wx_login_container", 
       appid: "appid", 
       scope: "snsapi_login", 
       redirect_uri: "回調地址",
       state: "",
       style: "black",
       href: "", //https://某個域名下的css文件
    });
});
</script>

注意其中href裏指向的css文件必須放在https協議下才能引用的到,大體上不需改變默認樣式,浪費腦細胞,可以針對div 來改變二維碼的大小和位置,裏邊是內嵌一個iframe

3. 用戶用微信客戶端掃第二部的登錄頁面登錄後,頁面會跳轉到回調地址並附加一個code參數,然後通過code參數可以通下面接口獲取到access_token和open_id

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

appid scret替換成你自己的,code替換替換成微信給你的 其他參數不變

返回:

{ 
"access_token":"ACCESS_TOKEN", 
"expires_in":7200, 
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID", 
"scope":"SCOPE",
"unionid": "xxxxxx"
}

參數 說明
access_token 接口調用憑證
expires_in access_token接口調用憑證超時時間,單位(秒)
refresh_token 用戶刷新access_token
openid 授權用戶唯一標識
scope 用戶授權的作用域,使用逗號(,)分隔
unionid 當且僅當該網站應用已獲得該用戶的userinfo授權時,纔會出現該字段。

4. 通過第三步獲取的accesstoken和openid再調用下個接口接口獲取用戶信息(年齡,性別,暱稱,頭像,國家等)。

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

返回

{ 
"openid":"OPENID",
"nickname":"NICKNAME",
"sex":1,
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/xxxxx",
"privilege":[
"PRIVILEGE1", 
"PRIVILEGE2"
],
"unionid": " xxxx"

}
參數 說明
openid 普通用戶的標識,對當前開發者帳號唯一
nickname 普通用戶暱稱
sex 普通用戶性別,1爲男性,2爲女性
province 普通用戶個人資料填寫的省份
city 普通用戶個人資料填寫的城市
country 國家,如中國爲CN
headimgurl 用戶頭像,最後一個數值代表正方形頭像大小(有0、46、64、96、132數值可選,0代表640*640正方形頭像),用戶沒有頭像時該項爲空
privilege 用戶特權信息,json數組,如微信沃卡用戶爲(chinaunicom)
unionid 用戶統一標識。針對一個微信開放平臺帳號下的應用,同一用戶的unionid是唯一的。

ACCECC_TOKEN OPENID替換成第三步獲取到的

5、獲取到用戶信息後,登錄到公司網站首頁。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章