如今微信已經成了人人必備的社交工具,在會員平臺如果可以用微信登錄,會大大增加用戶和平臺之間的粘合度。這次就帶領大家實現移動端微信授權登錄。
1、網頁端微信登錄必須在微信中實現。
和PC端掃碼登錄不同,移動端網頁無法使用普通瀏覽器微信授權登錄,必須在微信中使用,這是必須要明確的。
2、準備工作。
我們需要有一個已經認證的微信服務號,這是必備條件。我們打開登錄微信公眾平臺,找到“接口權限”。
我們已經有了獲取網頁用戶信息的權限,如果服務號沒有認證的話,這個權限是沒有的。
之后點擊修改,配置需要微信授權的域名。注意授權需要寫www.abc.com,不能帶http,錯誤寫法:http://www.abc.com。
3、微信授權獲取微信用戶信息
準備工作做好后,我們就可以按照文檔https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html?來一步步進行了。
第一步:用戶同意授權,獲取code。
public?function?wechat_login(){ ????????????$appid='wxff5b68b041a4fb11';//公眾號基本配置中獲取 ????????????$redirect_uri='http://a.xx.cn/mobile/user/weixin_m.html';//用戶授權后跳轉處理的地址 ????????????$url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; ????????????return?redirect($url); ????????}
我們引導用戶去訪問wechat_login這個方法,這里需要準備兩個參數,appid在公眾號基本配置中獲取,redirect_uri是微信用戶授權后的處理地址回調,這里一定要寫http絕對地址,外網能夠訪問的地址。
第二步:通過code換取網頁授權access_token
我們建立第一步的回調方法weixin_m。我們先打印code,檢測我們是否能夠獲取,這也是程序調試的常用步驟,這步驟沒問題再進行下面的。
public?function?weixin_m(){ ????????????$code=input('get.code'); ????????????halt($code); }
接下來我們再獲取access_token。
public?function?weixin_m(){ ????????????$code=input('get.code'); ????????????$appid='wxff5b68b241a4fb11';//公眾號基本配置中獲取 ????????????$appsecret='412a24b17e61317d589b8bf92f374ffc'; ????????????$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code"; ????????????$res=json_decode(file_get_contents($url),true);//json轉數組 }
我們去請求地址獲取access_token,其中需要三個參數:appid、appsecret、code。appsecret同樣也是在公眾號基本配置中獲取。
獲取后微信默認返回是json格式,所以我們把json轉成數組,這樣就方便進行操作。
打印數組如下:
array:6?[ ????????????????"access_token"?=>?"37_3RRxoQZKuECSpCfGMYLcO-1ZXu_uhTkdku_m29u4XfSq9-Ve_0Fn5_K6vUBpkiL1iXRpEBepOfeMZZA7TGm-bg" ?????????????????"expires_in"?=>?7200 ????????????????"refresh_token"?=>?"37_CjmxjzqBCqiIVH3aKjR22RQniCr_7DYYJYgodMONV5822FnfKuq0VwOS0B9dfucHf6GxTjXbczruwS5NIkGAWw" ?????????????????"openid"?=>?"oaq-51XAHNaj9qUxVwYu3-elVTa0" ?????????????????"scope"?=>?"snsapi_userinfo" ?????????????????"unionid"?=>?"oO0Bhv6ZSw4ZYV60CMzi2p4eUO7s" ????????????]
這樣我們就成功獲取到了access_token和openid。
第三步:拉取用戶信息(需scope為 snsapi_userinfo)
我們依然按照文檔去請求地址:
?$user_url="https://api.weixin.qq.com/sns/userinfo?access_token=".$res['access_token']."&openid=".$res['openid']."&lang=zh_CN";???????????? ?$userData=json_decode(file_get_contents($user_url),true);//json轉數組???????????? ?halt($userData);
請求的時候需要攜帶我們在第二步中獲取的access_token和openid兩個參數。微信返回仍然是json格式,我們再次把json轉成數組。
打印數組如下:
獲取到用戶數據后,我們就可以對數組入庫或者其他操作了。
截至到這里“移動端微信授權登錄”就已經介紹完了,整體難度不大,也需要大家耐心讀文檔,文檔是最好的老師。大家加油!