本文執行個體講述了公眾平台實現擷取使用者OpenID的方法。分享給大家供大家參考。具體分析如下:
使用者點擊自訂菜單view類型按鈕後,用戶端將會開啟開發人員在按鈕中填寫的url值 (即網頁連結),達到開啟網頁的目的,但是view不能擷取使用者的openid,需要使用“網頁授權擷取使用者基本資料”進階介面結合使用,獲得使用者的登入個人資訊。
具體方法:
1、配置網頁授權回調網域名稱,如 www.bitsCN.com
2、類比公眾號的第三方網頁,http://www.bitsCN.com/getcodeurl.php
<?php if(isset($_SESSION['user'])){ print_r($_SESSION['user']);exit;}$APPID='公眾號在的appid';$REDIRECT_URI='http://www.bitsCN.com/callback.php';$scope='snsapi_base';//$scope='snsapi_userinfo';//需要授權$url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$APPID.'&redirect_uri='.urlencode($REDIRECT_URI).'&response_type=code&scope='.$scope.'&state='.$state.'#wechat_redirect';header("Location:".$url);?>
3、第三方網頁的回跳url中,首先從請求中取得code,然後根據code進一步換取openid和access_token,然後就可以根據openid和access_token調用的相關介面查詢使用者資訊了。
<?php//http://www.bitsCN.com/callback.php$appid = "公眾號在的appid"; $secret = "公眾號在的app secret"; $code = $_GET["code"]; $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';$ch = curl_init();curl_setopt($ch,CURLOPT_URL,$get_token_url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); $res = curl_exec($ch); curl_close($ch); $json_obj = json_decode($res,true); //根據openid和access_token查詢使用者資訊 $access_token = $json_obj['access_token']; $openid = $json_obj['openid']; $get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN'; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$get_user_info_url); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); $res = curl_exec($ch); curl_close($ch); //解析json $user_obj = json_decode($res,true); $_SESSION['user'] = $user_obj; print_r($user_obj); ?>
希望本文所述對大家基於php的公眾平台開發有所協助。