網站接入微信掃碼登陸並獲取用戶基本信息(微信開放平臺)

如今的網站基本都接入微信登錄了,就好像下面這樣的。php

clipboard.png

只須要用微信掃一下二維碼,這個網站就能夠展現你的微信暱稱和頭像,免去註冊帳號和輸入密碼登陸的步驟,還免去設置頭像和暱稱的步驟,因此是挺方便的。html

那麼如何把本身的網站接入這個呢?首先我們得先在微信開放平臺註冊帳號而且建立一個網站應用,等待審覈經過後就能夠得到Appid和AppSecretbingqie而且還要設置回調域名,這個很少說。api

首先咱們根據官方文檔的流程來作:瀏覽器

第一步:請求CODE
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

經過以上的接口請求CODE微信

請求參數:app

clipboard.png

OK參數說的明白,咱就開始寫代碼了。網站

新建login.php加密

<?php
//生成state參數,利用MD5對時間戳進行加密生成32位數的state,也是爲了簡單哈哈,本身用其餘方法生成吧
//時間戳
$time = time();
//對時間戳進行加密,就是state
$state = MD5($time);
//APPID
$appid = "你的APPID";
//redirect_uri回調地址,也就是請求完了以後,我們須要跳轉的地址,我這裏直接跳轉到我網站的oauth.php的地址,這個文件是 用來下一步獲取access_token的
$redirect_uri = "http://www.xxx.com/open/oauth.php";
//scope默認是snsapi_login
$scope = "snsapi_login";

//拼接參數進行自動跳轉
echo "<script>location.href=\"https://open.weixin.qq.com/connect/qrconnect?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=$scope&state=$state#wechat_redirect\";</script>";
?>

咱們在瀏覽器訪問login.php後,就會生成一個code和攜帶了咱們頁面生成的state
即:redirect_uri?code=CODE&state=STATEspa

那麼這兩個參數,就進入和第二步須要用到CODEcode

第二步:經過code獲取access_token

獲取接口:

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

老樣子,仍是要構建請求參數

上面是有一個oauth.php的
這個文件已經接收到了code,咱們就用這個文件構建請求參數

oauth.php

<?php
header("Content-type:text/html;charset=utf-8");
//獲取login.php傳過來的code
$code = $_GET["code"];

//經過接口獲取access_token
//構造請求參數
$appid = "你的APPID";
$appsecret = "你的APPSecret";
//拼接參數,自動跳轉
echo "<script>location.href=\"https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code\";</script>";
?>

若是成功,那麼就會返回一個JSON數據

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

不然:

{"errcode":40029,"errmsg":"invalid code"}

clipboard.png

成功截圖:

clipboard.png

那麼,openid都獲取到了access_token也獲取到了,能幹啥?

固然是獲取用戶基本信息啊,直接調用接口就行。

第三步:獲取用戶基本信息
https://api.weixin.qq.com/sns/userinfo?access_token=獲取到的ACCESS_TOKENQ&openid=獲取到的OPENID

而後訪問,就是一堆用戶基本信息了。

clipboard.png

頭像,暱稱,城市,國家,unionid

做者:tanking

相關文章
相關標籤/搜索