溫州包垟鄉(xiāng)微信公眾號(hào)網(wǎng)頁(yè)授權(quán)詳解
閱讀 34216 · 發(fā)布日期 2020-08-24 17:26 · 溫州優(yōu)光網(wǎng)絡(luò)科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】
在這個(gè)移動(dòng)端的時(shí)代,微信公眾號(hào)也逐漸成為人們獲取信息的一種渠道,也是商家發(fā)展?jié)撛诳蛻舻囊环N手段,因此,許多程序員轉(zhuǎn)戰(zhàn)微信開(kāi)發(fā),那么今天,我們就來(lái)為大家介紹一下微信公眾號(hào)開(kāi)發(fā)中的網(wǎng)頁(yè)授權(quán)到底要怎樣才能實(shí)現(xiàn)。在這之前先給大家一個(gè)我自定義的請(qǐng)求接口的函數(shù),在下面的示例代碼中請(qǐng)求接口用的都是這個(gè)函數(shù)該函數(shù)的作用是,想接口發(fā)起請(qǐng)... 【溫州小程序開(kāi)發(fā),溫州微信公眾號(hào),平陽(yáng)做網(wǎng)站,平陽(yáng)網(wǎng)站建設(shè)公司,平陽(yáng)小程序商城制作,昆陽(yáng)萬(wàn)全做網(wǎng)站,鰲江水頭小程序,蕭江騰蛟微信公眾號(hào),山門順溪南雁海西南麂鳳臥麻步懷溪網(wǎng)絡(luò)網(wǎng)店服務(wù),政采云網(wǎng)店管理服務(wù)】...
在這個(gè)移動(dòng)端的時(shí)代,微信公眾號(hào)也逐漸成為人們獲取信息的一種渠道,也是商家發(fā)展?jié)撛诳蛻舻囊环N手段,因此,許多程序員轉(zhuǎn)戰(zhàn)微信開(kāi)發(fā),那么今天,我們就來(lái)為大家介紹一下微信公眾號(hào)開(kāi)發(fā)中的網(wǎng)頁(yè)授權(quán)到底要怎樣才能實(shí)現(xiàn)。
在這之前先給大家一個(gè)我自定義的請(qǐng)求接口的函數(shù),在下面的示例代碼中請(qǐng)求接口用的都是這個(gè)函數(shù)該函數(shù)的作用是,想接口發(fā)起請(qǐng)求,傳遞參數(shù)并返回接口返回的數(shù)據(jù)(這個(gè)里面的代碼就不做多解釋了,如果大家想要了解可以去看一下php curl函數(shù)總結(jié))//自定義請(qǐng)求接口函數(shù),$data為空時(shí)發(fā)起get請(qǐng)求,$data有值時(shí)發(fā)情post請(qǐng)求 function http_url($url,$data=null){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
if(!empty($data)){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
$res = curl_exec($ch);
if(curl_errno($ch)){
echo "error:".curl_error($ch);
exit;
}
curl_close($ch);
return $res;
}
(文中所使用的接口為騰訊官方提供,大家可以參考一下微信公眾平臺(tái)的開(kāi)發(fā)者文檔)一、首先我們需要配置我們的公眾號(hào)1、在微信公眾號(hào)請(qǐng)求用戶網(wǎng)頁(yè)授權(quán)之前,開(kāi)發(fā)者需要先到公眾平臺(tái)官網(wǎng)中的“開(kāi)發(fā) - 接口權(quán)限 - 網(wǎng)頁(yè)服務(wù) - 網(wǎng)頁(yè)帳號(hào) - 網(wǎng)頁(yè)授權(quán)獲取用戶基本信息”的配置選項(xiàng)中,修改授權(quán)回調(diào)域名。
請(qǐng)注意,這里填寫的是域名(是一個(gè)字符串),而不是URL,因此請(qǐng)勿加 http:// 等協(xié)議頭;2、授權(quán)回調(diào)域名配置規(guī)范為全域名,比如需要網(wǎng)頁(yè)授權(quán)的域名為:
www.qq.com,配置以后此域名下面的頁(yè)面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以進(jìn)行OAuth2.0鑒權(quán)。
但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com無(wú)法進(jìn)行OAuth2.0鑒權(quán)3、如果公眾號(hào)登錄授權(quán)給了第三方開(kāi)發(fā)者來(lái)進(jìn)行管理,則不必做任何設(shè)置,由第三方代替公眾號(hào)實(shí)現(xiàn)網(wǎng)頁(yè)授權(quán)即可二、用戶同意授權(quán),獲取code接口地址:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect (注意接口參數(shù)) function Get_Code() //獲取code {
//構(gòu)造請(qǐng)求地址 $code_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=微信公眾號(hào)appid&redirect_uri=請(qǐng)求功后回調(diào)地址&response_type=code&scope=snsapi_userinfo&state=STATE #wechat_redirect";
//跳轉(zhuǎn)到請(qǐng)求地址,應(yīng)為本省設(shè)置了回調(diào)地址,所以不需要使用file_get_content()來(lái)請(qǐng)求接口。
header("location:" . $code_url);
exit;
}
三、通個(gè)獲取到的code來(lái)或缺access_token和openid接口:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code/** * 通過(guò)獲取到的code來(lái)獲取access_token和openid * $code為獲取到的code * 接口的參數(shù)注意換成自己的,如appid和secret */ function GetAccess_Token($code) {
$get_access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=$code&grant_type=authorization_code";
$res = http_url($get_access_token_url);
return json_decode($res, true);
}
四、判斷access_token是否有效接口:
https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID/** * 檢查access_token是否有效 * */ function CkeckAccessToken($access_token, $openid) {
$check_url = "https://api.weixin.qq.com/sns/auth?access_token=$access_token&openid=$openid";
$res = http_url($check_url);
$result = json_decode($res, true);
if (isset($result['
errmsg'
]) && $result['
errmsg'
] == 1) {
return 1;
//access_token有效 }
else {
return 0;
//access_token無(wú)效 }
}
五、如果失效,刷新access_token接口:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN/** * 如果獲取到的access_token無(wú)效,通過(guò)refresh_token來(lái)刷新access_token *接口的參數(shù)注意換成自己的 */ function GetRefresh_Token($refresh_token) {
$get_refresh_token_url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=$refresh_token";
$res = http_url($get_refresh_token_url);
return json_decode($res, true);
}
六、獲取用戶信息接口:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN/** * 獲取用戶基本信息 * */ function Get_User_Info($access_token, $openid){
$get_user_info = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
$res = http_url($get_user_info);
return json_decode($res, true);
}
獲取到用戶信息數(shù)據(jù):
{
"openid":" OPENID", " nickname": NICKNAME, "sex":"1", "province":"PROVINCE" "city":"CITY", "country":"COUNTRY", "headimgurl": "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46", "privilege":[ "PRIVILEGE1" "PRIVILEGE2" ], "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL" }
下面上完整代碼:
//啟動(dòng)session if (isset($_GET['
code'
])) {
//判斷是否有code傳過(guò)來(lái),如果沒(méi)有調(diào)用函數(shù)請(qǐng)求code $res = GetAccess_Token($_GET['
code'
]);
//使用code獲取access_token和openid if (CkeckAccessToken($res['
access_token'
], $res['
openid'
]) == 0) {
//判斷access_token是否有效,如果無(wú)效獲取新的access_token $res = GetRefresh_Token($res['
refresh_token'
]);
//或缺新的access_token }
$userinfo = Get_User_Info($res['
access_token'
], $res['
openid'
]);
//獲取用戶信息 $_SESSION['
userinfo'
] = $userinfo;
//將用戶信息存入session中 $next_url = '
http://web/index.php'
;
//下一個(gè)頁(yè)面地址 header("location:" . $next_url);
//獲取到信息后跳轉(zhuǎn)到其他頁(yè)面 exit;
}
else {
//獲取code Get_Code();
}
function Get_Code() //獲取code{
$code_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=回調(diào)地址&response_type=code&scope=snsapi_userinfo&state=STATE #wechat_redirect";
header("location:" . $code_url);
exit;
}
/** * 通過(guò)獲取到的code來(lái)獲取access_token和openid * */ function GetAccess_Token($code){
$get_access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=secret&code=$code&grant_type=authorization_code";
$res = http_url($get_access_token_url);
return json_decode($res, true);
}
/** * 檢查access_token是否有效 * */ function CkeckAccessToken($access_token, $openid){
$check_url = "https://api.weixin.qq.com/sns/auth?access_token=$access_token&openid=$openid";
$res = http_url($check_url);
$result = json_decode($res, true);
if (isset($result['
errmsg'
]) && $result['
errmsg'
] == 1) {
return 1;
//access_token有效 }
else {
return 0;
//access_token無(wú)效 }
}
/** * 如果獲取到的access_token無(wú)效,通過(guò)refresh_token來(lái)刷新access_token */ function GetRefresh_Token($refresh_token){
$get_refresh_token_url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=appid&grant_type=refresh_token&refresh_token=$refresh_token";
$res = http_url($get_refresh_token_url);
return json_decode($res, true);
}
/** * 獲取用戶基本信息 * */ function Get_User_Info($access_token, $openid){
$get_user_info = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
$res = http_url($get_user_info);
return json_decode($res, true);
}
//自定義請(qǐng)求接口函數(shù),$data為空時(shí)發(fā)起get請(qǐng)求,$data有值時(shí)發(fā)起post請(qǐng)求 function http_url($url,$data=null){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
if(!empty($data)){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
$res = curl_exec($ch);
if(curl_errno($ch)){
echo "error:".curl_error($ch);
exit;
}
curl_close($ch);
return $res;
}
以上就是微信公眾號(hào)網(wǎng)頁(yè)授權(quán)詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
微信
分享相關(guān)標(biāo)簽:
微信 微信公眾號(hào)本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請(qǐng)注明出處,感謝您的尊重!
上一篇:
如何使用vue完成微信公眾號(hào)網(wǎng)頁(yè)
下一篇:
jsapi支付什么意思相關(guān)文章相關(guān)視頻微信公眾號(hào)里“JS接口域名”實(shí)現(xiàn)分享功能微信公眾號(hào)推送消息給用戶?微信公眾號(hào)的二次開(kāi)發(fā)框架--微擎基本介紹如何使用vue完成微信公眾號(hào)網(wǎng)頁(yè)微信公眾號(hào)網(wǎng)頁(yè)授權(quán)詳解網(wǎng)頁(yè)授權(quán)接口調(diào)用實(shí)例解析 [溫州做微信公眾號(hào)]
為您推薦
- 微信公眾號(hào)里“JS接口域名”實(shí)現(xiàn)分享功能 2020-08-24
- 微信支付驗(yàn)證或簽名失敗是什么原因?附三種解決方案 2020-08-24
- android微信登陸、分享做了一段時(shí)間了發(fā)現(xiàn)的一些坑 2020-08-24
- 最新整理出的微信分享后端接口實(shí)現(xiàn)的大致流程 2020-08-24
- 微信公眾號(hào)開(kāi)發(fā):商戶如何給用戶發(fā)紅包實(shí)例講解 2020-08-24
- 長(zhǎng)見(jiàn)識(shí)了,原來(lái)微信瀏覽器內(nèi)可以直接啟動(dòng)外部瀏覽器 2020-08-24
- 怎么創(chuàng)建微信公眾號(hào)自定義菜單欄?這里給出了權(quán)威解答 2020-08-24
- 微信公眾號(hào)開(kāi)發(fā),實(shí)現(xiàn)倒計(jì)時(shí)的一個(gè)功能(純代碼) 2020-08-24