微信公眾平臺(tái)實(shí)現(xiàn)獲取用戶OpenID的方法
本文實(shí)例講述了微信公眾平臺(tái)實(shí)現(xiàn)獲取用戶OpenID的方法。分享給大家供大家參考。具體分析如下:
用戶點(diǎn)擊微信自定義菜單view類型按鈕后,微信客戶端將會(huì)打開(kāi)開(kāi)發(fā)者在按鈕中填寫(xiě)的url值 (即網(wǎng)頁(yè)鏈接),達(dá)到打開(kāi)網(wǎng)頁(yè)的目的,但是view不能獲取用戶的openid,需要使用微信“網(wǎng)頁(yè)授權(quán)獲取用戶基本信息”高級(jí)接口結(jié)合使用,獲得用戶的登入個(gè)人信息。
具體方法:
1、配置網(wǎng)頁(yè)授權(quán)回調(diào)域名,如 chabaoo.cn
2、模擬公眾號(hào)的第三方網(wǎng)頁(yè),http://chabaoo.cn/getcodeurl.php
<?php if(isset($_SESSION['user'])){ print_r($_SESSION['user']); exit; } $APPID='公眾號(hào)在微信的appid'; $REDIRECT_URI='http://chabaoo.cn/callback.php'; $scope='snsapi_base'; //$scope='snsapi_userinfo';//需要授權(quán) $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、第三方網(wǎng)頁(yè)的回跳url中,首先從請(qǐng)求中取得code,然后根據(jù)code進(jìn)一步換取openid和access_token,然后就可以根據(jù)openid和access_token調(diào)用微信的相關(guān)接口查詢用戶信息了。
<?php //http://chabaoo.cn/callback.php $appid = "公眾號(hào)在微信的appid"; $secret = "公眾號(hào)在微信的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); //根據(jù)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); ?>
希望本文所述對(duì)大家基于php的微信公眾平臺(tái)開(kāi)發(fā)有所幫助。
- 微信公眾號(hào)支付(一)如何獲取用戶openId
- .NET微信公眾號(hào)獲取OpenID和用戶信息
- PHP通過(guò)微信跳轉(zhuǎn)的Code參數(shù)獲取用戶的openid(關(guān)鍵代碼)
- MVC微信網(wǎng)頁(yè)授權(quán)獲取用戶OpenId
- ASP.NET Core2靜默獲取微信公眾號(hào)的用戶OpenId實(shí)例代碼
- 微信公眾平臺(tái)開(kāi)發(fā)教程⑥ 微信開(kāi)發(fā)集成類的使用圖文詳解
- 微信公眾平臺(tái)開(kāi)發(fā)教程②微信端分享功能圖文詳解
- 詳解微信圖片防盜鏈“此圖片來(lái)自微信公眾平臺(tái) 未經(jīng)允許不得引用”的解決方案
- PHP封裝的微信公眾平臺(tái)接口開(kāi)發(fā)操作類完整示例
- 微信公眾平臺(tái)開(kāi)發(fā)教程①獲取用戶Openid及個(gè)人信息圖文詳解
相關(guān)文章
ThinkPHP3.2.3框架郵件發(fā)送功能圖文實(shí)例詳解
這篇文章主要介紹了ThinkPHP3.2.3框架郵件發(fā)送功能,結(jié)合圖文與實(shí)例形式詳細(xì)分析了基于thinkPHP框架進(jìn)行郵件發(fā)送的相關(guān)原理、配置及操作技巧,需要的朋友可以參考下2019-04-04laravel 5異常錯(cuò)誤:FatalErrorException in Handler.php line 38的解決
這篇文章主要給大家介紹了關(guān)于laravel 5異常錯(cuò)誤:FatalErrorException in Handler.php line 38的解決方法,文中將解決方法介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10php bcdiv和bcmul 函數(shù)的怪異現(xiàn)象
這篇文章主要介紹了php bcdiv和bcmul 函數(shù)的怪異現(xiàn)象,本文通過(guò)實(shí)例代碼講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04PHP-FPM之Chroot執(zhí)行環(huán)境詳解
在PHP-FPM中設(shè)立chroot,有很好的隔離作用,提高系統(tǒng)安全性,但是要想建立一個(gè)合理的PHP-FPM Chroot環(huán)境難度有點(diǎn)大,比用debootstrap等工具建立還要麻煩,這篇文章就詳細(xì)介紹了PHP-FPM之Chroot執(zhí)行環(huán)境,需要的朋友可以參考下。2015-08-08分享一個(gè)PHP數(shù)據(jù)流應(yīng)用的簡(jiǎn)單例子
分享一個(gè)PHP數(shù)據(jù)流應(yīng)用的簡(jiǎn)單例子,需要的朋友可以參考下2012-06-06PhpStorm本地?cái)帱c(diǎn)調(diào)試的方法步驟
php代碼在調(diào)試時(shí),經(jīng)常是print_r或者var_dump來(lái)斷點(diǎn),但是當(dāng)項(xiàng)目較為復(fù)雜的情況下,這么做效率就非常低下了,斷點(diǎn)調(diào)試就非常好的解決了這個(gè)問(wèn)題,這篇文章主要介紹了PhpStorm本地?cái)帱c(diǎn)調(diào)試的方法步驟,感興趣的小伙伴們可以參考一下2018-05-05thinkphp5框架API token身份驗(yàn)證功能示例
這篇文章主要介紹了thinkphp5框架API token身份驗(yàn)證功能,結(jié)合實(shí)例形式分析了thinkPHP5基于token的身份驗(yàn)證操作步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05