一、准備工作
1.認證的微信開發者賬號一只
2.審核通過的網站應用一個
3.授權域名可用
二、微信登錄流程
網站應用微信登錄是基於OAuth2.0協議標准構建的微信OAuth2.0授權登錄系統。授權流程如下:
1.第三方發起微信授權登錄請求,微信用戶允許授權第三方應用后,微信會拉起應用或重定向到第三方網站,並且帶上授權臨時票據code參數;
2.通過code參數加上AppID和AppSecret等,通過API換取access_token;
3.通過access_token進行接口調用,獲取用戶基本數據資源或幫助用戶實現基本操作。
流程圖:
三、構造授權頁面,請求code
為了滿足網站定制化的需求,微信提供了兩種方式:
1.構造授權鏈接
其中各個參數,微信開放平台里面有很詳細的解釋,這里注意的一點是回調地址必須是在回調域名內,並且urlencode之后才可以正確使用,成功后會攜帶state和code參數跳到回調頁面。
2.js微信登錄
①在頁面中引入js文件
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
②在需要登錄的頁面實例化登錄對象
這里的回調地址與第一種方式一樣,必須是urlencode之后的授權域名下的地址,這里的二維碼顯示可以自己設置樣式,只要容器的id是你在實例化的時候設置的就好了
(個人測試,比較丑)
四、獲取access_token
在上一步我們拿到code之后,就可以通過code來獲取這個應用的access_token了。
access_token的有效期是7200秒,當這個token超時后,我們可以使用refresh_token來進行刷新獲取新的access_token。refresh_token擁有較長的有效期(30天),當refresh_token失效的后,需要用戶重新授權。
請求鏈接如下:
返回結果:
在我們獲取到access_token的同時,我們同時也獲取到了用戶的openid和unionid。這個openid和uniond是對於微信開發平台網站應用的openid,不是對於公眾號的openid,與公眾號毫無關聯。union則是多個微信網站應用之間的關聯。
五、根據access_token調用接口
在我們獲取到access_token之后就可以根據不同的scope權限調用接口了,scope權限區分如下:
大家可以在構造授權的時候自行根據需要填寫授權,這里並沒有寫我們構造授權鏈接是填寫的“snsapi_login”,但是我個人測試發現可以獲取access_token以及獲取個人信息,這個"snsapi_login"應該是包含了上述兩種scope的。
主要能調用的幾個接口如下:
①獲取access_token
②刷新(續期)access_token
③獲取用戶個人信息(unionid機制)
這是獲取用戶個人信息的接口調用方式,access_token和openid都是來自用code換取access_token之后得到的數據,返回結果如下
六、參考鏈接
微信網站應用微信登錄開發指南:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN