《PHP實戰(zhàn):微信公眾號點擊菜單即可打開并登錄微站的實現(xiàn)方法》要點:
本文介紹了PHP實戰(zhàn):微信公眾號點擊菜單即可打開并登錄微站的實現(xiàn)方法,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP應(yīng)用本文實例講述了微信公眾號點擊菜單即可打開并登錄微站的實現(xiàn)辦法.分享給大家供大家參考.具體分析如下:
PHP應(yīng)用總體來說,微信公眾號點擊菜單即可打開并登錄微站實現(xiàn)步驟比較復(fù)雜,但很多微站在己用上了,本文對此進(jìn)行整理歸納,相信可以給大家?guī)硪欢ǖ膮⒖冀梃b價值.
PHP應(yīng)用現(xiàn)在大部分微站都通過用戶的微信openid來實現(xiàn)自動登錄.在我之前的開發(fā)中,用戶通過點擊一個菜單,公眾號返回一個圖文,用戶點擊這個圖文才可以自動登錄微站.但是如果你擁有高級接口,就可以實現(xiàn)點擊菜單,打開網(wǎng)頁就能獲取這個openid,實現(xiàn)自動登錄.
這里已經(jīng)提到,必須要擁有高級接口的權(quán)限(服務(wù)號、企業(yè)號),開啟了開發(fā)者模式.
PHP應(yīng)用1.設(shè)置回調(diào)地址
PHP應(yīng)用在微信公眾平臺后臺“開發(fā)者中心”中找到“高級接口”下的“OAuth2.0網(wǎng)頁授權(quán)”,后面有一個“修改”,點擊之后就會彈出填寫回調(diào)地址的對話框.具體如何授權(quán),請點擊這里學(xué)習(xí).只有獲得高級接口權(quán)限后,才能出現(xiàn)這個地方的“修改”.
注意,這里填寫的是域名,不是帶的網(wǎng)址,而且解釋中很清楚,“授權(quán)回調(diào)域名配置規(guī)范為全域名”,也就是說帶www和不帶是不同的兩個域名.因此我這里要填寫如下圖中的域名.
PHP應(yīng)用![PHP實戰(zhàn):微信公眾號點擊菜單即可打開并登錄微站的實現(xiàn)方法]()
PHP應(yīng)用2. 創(chuàng)建菜單
PHP應(yīng)用創(chuàng)建菜單可以通過你的微站后臺創(chuàng)建,如果沒有開啟開發(fā)者模式,也可以通過微信公眾平臺后臺創(chuàng)建.
菜單使用點擊打開鏈接的模式,也就是view模式.如果你是使用開發(fā)者模式,通過向微信提交如下代碼,即可創(chuàng)建公眾號菜單(開發(fā)者文檔):
代碼如下:
{
???? "button":[
???? {
????????? "type":"view",
????????? "name":"登錄微站",
????????? "url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid={在微信公眾平臺后臺獲取這個APPID}&redirect_uri={你填寫的回調(diào)域名下的地址}&response_type=code&scope=snsapi_base&state=1#wechat_redirect"
????? }]
}
代碼1 要提交的菜單代碼,下面要用到
APPID的獲取位置就是上面你填寫回調(diào)地址的那個“開發(fā)者中心”.下面我們用PHP來實現(xiàn)一下菜單提交:
代碼如下:
<?php
function curl_info($appid,$secret) {
? $ch = curl_init();
? curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret);
? curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
? curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
? curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
? curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
? curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
? curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
? // curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
? curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
? $tmpInfo = curl_exec($ch);
? if (curl_errno($ch)) {?
??? echo 'Errno'.curl_error($ch);
? }
? curl_close($ch);
? $arr= json_decode($tmpInfo,true);
? return $arr;
}
function curl_menu($ACCESS_TOKEN,$data) {
? $ch = curl_init();
? curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$ACCESS_TOKEN);
? curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
? curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
? curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
? curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
? curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
? curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
? curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
? curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
? $tmpInfo = curl_exec($ch);
? if (curl_errno($ch)) {
??? echo 'Errno'.curl_error($ch);
? }
? curl_close($ch);
? $arr= json_decode($tmpInfo,true);
? return $arr;
}
function creat_menu() {
? $ACCESS_LIST= curl_info(APP_ID,APP_SCR);//獲取到的憑證,你需要自己define APP_ID和APP_SCR(應(yīng)用密鑰),這個也是在微信公眾平臺后臺開發(fā)者中心找
? if($ACCESS_LIST['access_token']!='') {
??? $access_token = $ACCESS_LIST['access_token'];//獲取到ACCESS_TOKEN
??? $data = '把上面代碼1拷貝黏貼在這里';
??? $msg = curl_menu($access_token,preg_replace("#u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '1'))", $data));
??? if($msg['errmsg']=='ok') {
????? die('創(chuàng)建自定義菜單成功!');
??? }
??? else {
????? die('創(chuàng)建自定義菜單失敗!');
??? }
? }
? else {
??? die('創(chuàng)建失敗,微信AppId或微信AppSecret填寫錯誤');
? }
}
create_menu();
?>
代碼2 用PHP來創(chuàng)建微信公眾號菜單
PHP應(yīng)用代碼2其實有點冗余了,核心部分用紅色標(biāo)出來了.就這樣,你的微信公眾號中應(yīng)該很快就可以看到創(chuàng)建了一個“登錄微站”的菜單.點擊這個菜單就可以實現(xiàn)登錄微站了.
如果你不需要PHP,可以直接在微信公眾平臺后臺的菜單自定義中寫鏈接就可以了.
PHP應(yīng)用![PHP實戰(zhàn):微信公眾號點擊菜單即可打開并登錄微站的實現(xiàn)方法]()
PHP應(yīng)用在上圖中的這個地方,選擇打開鏈接的方式創(chuàng)建菜單.OK,接下來把上面那個鏈接放進(jìn)去:
PHP應(yīng)用https://open.weixin.qq.com/connect/oauth2/authorize?appid={在微信公眾平臺后臺獲取這個APPID}&redirect_uri={你填寫的回調(diào)域名下的地址}&response_type=code&scope=snsapi_base&state=1#wechat_redirect
PHP應(yīng)用創(chuàng)建菜單就可以了.
當(dāng)然,你也有可能只需要在你自己的微信管理后臺加入這個鏈接就可以了.
PHP應(yīng)用3.在回調(diào)頁獲取openid
PHP應(yīng)用細(xì)心的你可能已經(jīng)發(fā)現(xiàn)了,上面的鏈接地址中含有參數(shù)scope=snsapi_base,而非scope=snsapi_userinfo,因為使用前者不需要用戶點擊一個授權(quán)按鈕,直接跳轉(zhuǎn)到回調(diào)頁面,而后者需要點擊授權(quán)按鈕,不過點擊授權(quán)按鈕有好處,一是可以在沒有關(guān)注公眾號的情況下也可以授權(quán),二是授權(quán)后可以獲得用戶的一些信息,如昵稱、性別、所在地.但是我們是為了利用openid進(jìn)行登錄,所以直接選擇前者就可以了.
PHP應(yīng)用點擊菜單之后,經(jīng)過微信authorize的處理,會跳轉(zhuǎn)到你提交的回調(diào)地址(這里需要提醒,回調(diào)地址最好不要帶參數(shù),例如xxx/?callback=from_weixin,因為微信跳轉(zhuǎn)到你的回調(diào)地址也要帶參數(shù),而這個參數(shù)就你需要的).微信跳轉(zhuǎn)到如下URL:
回調(diào)地址/?code=CODE&state=1
PHP應(yīng)用上面代碼可以通過$_GET['code']獲得一個CODE值,利用這個CODE值和appid,可以獲得openid和access_token.
下面再用PHP來實現(xiàn)以下:
代碼如下:
if($_GET['code']) {
? $code = $_GET['code'];
? $data = get_by_curl('https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSRC&code='.$code.'&grant_type=authorization_code');
? $data = json_decode($data);
? $openid = $data->openid;
? $access_token = $data->access_token;
}
function get_by_curl($url,$post = false){
??? $ch = curl_init();
??? curl_setopt($ch,CURLOPT_URL,$url);
??? curl_setopt($ch, CURLOPT_HEADER, 0);
??? curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
??? if($post){
??????? curl_setopt($ch, CURLOPT_POST, 1);
??????? curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
??? }
??? $result = curl_exec($ch);
??? curl_close($ch);
??? return $result;
}
這樣可以就可以獲得openid和access_token,利用這些值,我們還可以利用微信公眾平臺的獲取用戶基本信息api接口獲取用戶基本信息.
PHP應(yīng)用希望本文所述對大家基于PHP的微信公眾號開發(fā)有所贊助.
維易PHP培訓(xùn)學(xué)院每天發(fā)布《PHP實戰(zhàn):微信公眾號點擊菜單即可打開并登錄微站的實現(xiàn)方法》等實戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/14054.html