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執行
- 引入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>
- html 部分
<div id="wx_login_container"></div>
- 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、獲取到用戶信息後,登錄到公司網站首頁。