php微信公眾平臺(tái)開(kāi)發(fā)之獲取用戶基本信息
本文的方法將囊括訂閱號(hào)和服務(wù)號(hào)以及自定義菜單各種場(chǎng)景,無(wú)論是否有高級(jí)接口權(quán)限,都有辦法來(lái)獲得用戶基本信息,而無(wú)需模擬登錄。
把微信和第三方網(wǎng)站結(jié)合起來(lái)運(yùn)行,是許多客戶經(jīng)常要的方案。這里簡(jiǎn)要介紹一下獲取微信用戶的基本信息,并在第三方網(wǎng)站直接登錄。
當(dāng)微信公戶關(guān)注一個(gè)公眾號(hào)時(shí),會(huì)產(chǎn)生一個(gè)獨(dú)一無(wú)二的OpenID,此時(shí)我們就需要用到它去請(qǐng)求微信服務(wù)器獲取用戶的基本信息,包括頭像,昵稱等。
更加詳細(xì)的說(shuō)明請(qǐng)參考 微信開(kāi)發(fā)文檔 。
獲取的步驟如下:
1 第一步:用戶同意授權(quán),獲取code
2 第二步:通過(guò)code換取網(wǎng)頁(yè)授權(quán)access_token
3 第三步:刷新access_token(如果需要)
4 第四步:拉取用戶信息(需scope為 snsapi_userinfo)
5 附:檢驗(yàn)授權(quán)憑證(access_token)是否有效
一、在微信公眾平臺(tái) —— 開(kāi)發(fā)者中心 : 網(wǎng)頁(yè)授權(quán)獲取用戶基本信息 :點(diǎn)擊 “修改”,配置網(wǎng)頁(yè)回調(diào)域名
二、用戶授權(quán)獲取code
必備資源:
$appid = ‘*****************';
$appsecret = ‘*************************';
注:redirect_url是授權(quán)后重定向的回調(diào)鏈接地址,請(qǐng)使用urlencode對(duì)鏈接進(jìn)行處理。
在網(wǎng)站入口處加上配置的 $url = ‘https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri=http%3A%2F%2Fjixian.c.zmit.cn%2F&response_type=code&scope=snsapi_userinfo&state=123&connect_redirect=1#wechat_redirect';
并請(qǐng)求訪問(wèn)上訴 url 。
當(dāng)用戶授權(quán)后,回調(diào)設(shè)置的域名,并會(huì)在url參數(shù)中拼接我們所需要的code,我們直接用 $_GET[‘code'] 獲取即可!
三、通過(guò)code獲取網(wǎng)頁(yè)授權(quán)access_token和openid
$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';
$token = json_decode(file_get_contents($token_url));
$opendid= $token->openid;
$access_token = $token->access_token;
四、獲取用戶信息
$info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$opendid.'⟨=zh_CN';
$info = json_decode(file_get_contents($info_url));
$data['name'] = $info->nickname;
$data['image'] = $info->headimgurl;
print_r($info);
五、當(dāng)獲取到用戶的openid等信息后,我們就可以將其存入數(shù)據(jù)庫(kù),只要有openid了,就相當(dāng)于微信用戶已經(jīng)登錄該網(wǎng)站!
使用AppID和AppSecret獲取的access_token,通過(guò)全局Access Token獲取用戶基本信息
1. 用戶關(guān)注以及回復(fù)消息的時(shí)候,均可以獲得用戶的OpenID
<xml> <ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName> <FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName> <CreateTime>1372307736</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> <EventKey><![CDATA[]]></EventKey> </xml>
其中的FromUserName就是OpenID
2. 然后使用access_token接口,請(qǐng)求獲得全局Access Token
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
返回結(jié)果:
{ "access_token": "NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ", "expires_in": 7200 }
3. 再使用全局ACCESS_TOKEN獲取OpenID的詳細(xì)信息
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID
返回如下:
{
"subscribe": 1,
"openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc",
"nickname": "刺猬寶寶",
"sex": 1,
"language": "zh_CN",
"city": "深圳",
"province": "廣東",
"country": "中國(guó)",
"headimgurl": "
"subscribe_time": 1386160805
}
至此,獲得用戶的基本信息。
這種方式最適合用戶在關(guān)注的時(shí)候,回復(fù)一條歡迎關(guān)注+用戶昵稱的信息,如關(guān)注下面公眾賬號(hào)時(shí)的回復(fù)所示。掃描二維碼可體驗(yàn)。
以上就是本文針對(duì)php微信公眾平臺(tái)開(kāi)發(fā)之獲取用戶基本信息的全部?jī)?nèi)容,希望大家喜歡。
相關(guān)文章
laravel orm 關(guān)聯(lián)條件查詢代碼
今天小編就為大家分享一篇laravel orm 關(guān)聯(lián)條件查詢代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10淺析php設(shè)計(jì)模式之?dāng)?shù)據(jù)對(duì)象映射模式
php中的設(shè)計(jì)模式中有很多的各種模式了,在這里我們來(lái)為各位介紹一個(gè)不常用的數(shù)據(jù)映射模式吧,感興趣的朋友一起看下吧2016-03-03laradock環(huán)境docker-compose操作詳解
在本篇文章中小編給大家整理的是關(guān)于laradock環(huán)境docker-compose操作的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。2019-07-07淺談PHP解析URL函數(shù)parse_url和parse_str
這篇文章主要介紹了PHP解析URL函數(shù)parse_url和parse_str,并給出了相應(yīng)的示例,非常的實(shí)用,有需要的朋友們可以參考下2014-11-11Laravel 實(shí)現(xiàn)關(guān)系模型取出需要的字段
今天小編就為大家分享一篇Laravel 實(shí)現(xiàn)關(guān)系模型取出需要的字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10PHP圖像識(shí)別技術(shù)原理與實(shí)現(xiàn)
本篇文章主要介紹了PHP圖像識(shí)別技術(shù)原理與實(shí)現(xiàn),這個(gè)平時(shí)做的密碼驗(yàn)證有異曲同工之處,有需要的可以了解一下。2016-10-10