記錄一下discuz3.3+微信OAuth2.0網頁授權過程
嘗試實現以下流程:點選微信選單,在微信瀏覽器中開啟網頁進行編輯操作,並以微信中的使用者資訊編輯上傳內容。
首先進行網頁授權,進入微信平臺,“開發 - 介面許可權 - 網頁服務 - 網頁帳號 - 網頁授權獲取使用者基本資訊”的配置選項中,修改授權回撥域名。
第一步:使用者同意授權,獲取code
在網站根目錄建立oauth2.php檔案:
<?php
if (isset($_GET['code'])){
echo $_GET['code'];
}else{
echo "NO CODE";
}
?>
在微信中構造並開啟以下連線,appid***替換為自己的appid,url***替換為自己的域名:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid***&redirect_uri=http://url***/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect
開啟以上連線後,得到code:
第二步:通過code換取網頁授權access_token
第一步成功取得code後,構造以下連線,其中,紅色部分需要替換為自己的對應值:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid***
這連線直接在pc瀏覽器中開啟,得到以下結果:
{
"access_token":"UotmqEAKaimK3BKz_d5Hx1Fwygj26Djq9gA6q0fgSw3r9OFJBaxZ1znjipDxEbFf9r7OMDg05IW***",
"expires_in":7200,
"refresh_token":"owILj4XC9GJ0-Lt8RHG5K-T05CjjoFDPWSV_WGbOv03KYWymL6xWN7kkRZenaFUqvhmJhxgvd6epTFjhWJflV***",
"openid":"olXyUwaWwouEo3_UrJpCQ8***",
"scope":"snsapi_userinfo"
}
第三步:重新整理access_token(如果需要)
替換以下連線中的紅色部分,在pc瀏覽器中開啟:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid***&grant_type=refresh_token&refresh_token=refresh_token***
得到以下內容:
{
"openid":"olXyUwaWwouEo3_U***",
"access_token":"UotmqEAKaimK3BKz_d5Hx1Fwygj26Djq9gA6q0fgSw3r9OFJBaxZ1znjipDxEbFf9r7***",
"expires_in":7200,
"refresh_token":"owILj4XC9GJ0-Lt8RHG5K-T05CjjoFDPWSV_WGbOv03KYWymL6x***",
"scope":"snsapi_base,jsapi_record,jsapi_location,snsapi_userinfo,"
}
第四步:拉取使用者資訊(需scope為 snsapi_userinfo)
根據上面得到的access_token以及openid,替換以下連線中的紅色部分,在pc瀏覽器中開啟:
https://api.weixin.qq.com/sns/userinfo?access_token=access_token***&openid=openid***
返回以下結果:
{
"openid":"olXyUwaW***",
"nickname":"***",
"sex":*,
"language":"zh_CN",
"city":"",
"province":"",
"country":"CN",
"headimgurl":"http:\/\/wx.qlogo.cn\/mmopen\/SXSQqYR286eWx***",
"privilege":[]
}