溫州九峰鄉(xiāng)還是代碼好用,幾步就能判斷用戶是否已關(guān)注公眾號(hào)
閱讀 31841 · 發(fā)布日期 2020-08-24 17:26 · 溫州優(yōu)光網(wǎng)絡(luò)科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】
現(xiàn)在的活動(dòng),很多都引導(dǎo)用戶關(guān)注公眾號(hào),才能參與活動(dòng),如何判斷用戶是否已關(guān)注公眾號(hào),其實(shí)很簡(jiǎn)單,照著本文章,你就不會(huì)再犯愁了,本文的php代碼很詳細(xì)的解說(shuō)了。一、微信公眾平臺(tái)配置1. 獲取appid, appsecret,添加白名單登錄微信公眾平臺(tái),進(jìn)入基本配置。開(kāi)發(fā)中需要用到兩個(gè)參數(shù),appId和appSecret(a... 【溫州小程序開(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ù)】...
現(xiàn)在的活動(dòng),很多都引導(dǎo)用戶關(guān)注公眾號(hào),才能參與活動(dòng),如何判斷用戶是否已關(guān)注公眾號(hào),其實(shí)很簡(jiǎn)單,照著本文章,你就不會(huì)再犯愁了,本文的php代碼很詳細(xì)的解說(shuō)了。
一、微信公眾平臺(tái)配置1. 獲取appid, appsecret,添加白名單登錄微信公眾平臺(tái),進(jìn)入基本配置。
開(kāi)發(fā)中需要用到兩個(gè)參數(shù),appId和appSecret(appSecret只展示一次,需保存下來(lái),否則需要重置獲?。?。
獲取access_token時(shí)需要添加IP白名單。
點(diǎn)擊查看點(diǎn)擊修改2. 添加網(wǎng)頁(yè)授權(quán)進(jìn)入公眾號(hào)設(shè)置=》功能設(shè)置=》網(wǎng)頁(yè)授權(quán)域名點(diǎn)擊設(shè)置,input框中輸入授權(quán)回調(diào)頁(yè)的域名參考第1點(diǎn)(只能填寫一個(gè)),下載第3點(diǎn)中的txt文檔,上傳至服務(wù)器的根目錄。
二、php后端實(shí)現(xiàn)1. 獲取全局token此token有效期為2小時(shí),可以暫存起來(lái),過(guò)期后需要重新獲取。
PS:
項(xiàng)目中必須走同一個(gè)接口,否則容易互刷導(dǎo)致過(guò)期。
public static function getToken($appid, $appsecret){
$url = '
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='
.$appid.'
&secret='
.$appsecret;
return Curl::callWebServer($url);
}
正確返回結(jié)果:
{
"access_token": "ACCESS_TOKEN", "expires_in": 7200 }
返回結(jié)果參數(shù)說(shuō)明:
參數(shù) 說(shuō)明 access_token 獲取到的全局token expires_in 憑證有效時(shí)間,單位:
秒 錯(cuò)誤返回結(jié)果:
{
"errcode": 40013, "errmsg": "invalid appid"}
返回結(jié)果參數(shù)說(shuō)明:
返回碼 說(shuō)明 -1 系統(tǒng)繁忙,此時(shí)請(qǐng)開(kāi)發(fā)者稍候再試 0 請(qǐng)求成功 40001 AppSecret錯(cuò)誤或者AppSecret不屬于這個(gè)公眾號(hào),請(qǐng)開(kāi)發(fā)者確認(rèn) AppSecret的正確性 40002 請(qǐng)確保grant_type字段值為client_credential 40164 調(diào)用接口的IP地址不在白名單中,請(qǐng)?jiān)诮涌贗P白名單中進(jìn)行設(shè)置。
(小程序及小游戲調(diào)用不要求IP地址在白名單內(nèi)。
)2. 獲取用戶關(guān)聯(lián)公眾號(hào)的openid分兩步,先要獲取到用戶對(duì)公眾號(hào)的授權(quán)碼,然后拿這個(gè)碼去獲取臨時(shí)access_token和openid。
獲取用戶授權(quán)碼public static function getCode($appId, $redirect_uri, $state=1, $scope='
snsapi_base'
, $response_type='
code'
){
$url = '
https://open.weixin.qq.com/connect/oauth2/authorize?appid='
.$appId.'
&redirect_uri='
.$redirect_uri.'
&response_type='
.$response_type.'
&scope='
.$scope.'
&state='
.$state.'
#wechat_redirect'
;
header('
Location: '
.$url, true, 301);
}
正確返回結(jié)果:
返回code碼,并且跳轉(zhuǎn)回調(diào)頁(yè)面$redirect_uri 錯(cuò)誤返回結(jié)果:
{
"errcode": 10003, "errmsg": "redirect_uri域名與后臺(tái)配置不一致"}
返回結(jié)果參數(shù)說(shuō)明:
返回碼 說(shuō)明 10003 redirect_uri域名與后臺(tái)配置不一致 10004 此公眾號(hào)被封禁 10005 此公眾號(hào)并沒(méi)有這些scope的權(quán)限 10006 必須關(guān)注此測(cè)試號(hào) 10009 操作太頻繁了,請(qǐng)稍后重試 10010 scope不能為空 10011 redirect_uri不能為空 10012 appid不能為空 10013 state不能為空 10015 公眾號(hào)未授權(quán)第三方平臺(tái),請(qǐng)檢查授權(quán)狀態(tài) 10016 不支持微信開(kāi)放平臺(tái)的Appid,請(qǐng)使用公眾號(hào)Appid通過(guò)getCode獲取到的code換取網(wǎng)頁(yè)授權(quán)的access_token和openidpublic static function getAccessToken($code, $appid, $appsecret, $grant_type='
authorization_code'
){
$url = '
https://api.weixin.qq.com/sns/oauth2/access_token?appid='
.$appid.'
&secret='
.$appsecret.'
&code='
.$code.'
&grant_type='
.$grant_type.'
'
;
return Curl::callWebServer($url);
}
正確返回結(jié)果:
{
"access_token": "ACCESS_TOKEN", "expires_in": 7200, "refresh_token": "REFRESH_TOKEN", "openid": "OPENID", "scope": "SCOPE" }
返回參數(shù)說(shuō)明 參數(shù) 描述 access_token 網(wǎng)頁(yè)授權(quán)接口調(diào)用憑證,注意:
此access_token與基礎(chǔ)支持的access_token不同 expires_in access_token接口調(diào)用憑證超時(shí)時(shí)間,單位(秒) refresh_token 用戶刷新access_token openid 用戶唯一標(biāo)識(shí),請(qǐng)注意,在未關(guān)注公眾號(hào)時(shí),用戶訪問(wèn)公眾號(hào)的網(wǎng)頁(yè),也會(huì)產(chǎn)生一個(gè)用戶和公眾號(hào)唯一的OpenID scope 用戶授權(quán)的作用域,使用逗號(hào)(,)分隔 錯(cuò)誤返回結(jié)果:
{
"errcode":40029, "errmsg":"invalid code"}
3. 獲取用戶信息使用第2步中獲取的openId和第1步中獲取的token去獲取用戶信息public static function getUserInfo($openId, $token){
$url = '
https://api.weixin.qq.com/cgi-bin/user/info?access_token='
.$token.'
&openid='
.$openId.'
&lang=zh_CN'
;
return Curl::callWebServer($queryUrl, '
'
, '
GET'
);
}
正確返回結(jié)果:
{
"subscribe": 1, "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", "nickname": "Band", "sex": 1, "language": "zh_CN", "city": "廣州", "province": "廣東", "country": "中國(guó)", "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", "subscribe_time": 1382694957, "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" "remark": "", "groupid": 0, "tagid_list":[128,2], "subscribe_scene": "ADD_SCENE_QR_CODE", "qr_scene": 98765, "qr_scene_str": "" }
返回參數(shù)說(shuō)明:
參數(shù) 說(shuō)明 subscribe 用戶是否訂閱該公眾號(hào)標(biāo)識(shí),值為0時(shí),代表此用戶沒(méi)有關(guān)注該公眾號(hào),拉取不到其余信息。
openid 用戶的標(biāo)識(shí),對(duì)當(dāng)前公眾號(hào)唯一 nickname 用戶的昵稱 sex 用戶的性別,值為1時(shí)是男性,值為2時(shí)是女性,值為0時(shí)是未知 city 用戶所在城市 country 用戶所在國(guó)家 province 用戶所在省份 language 用戶的語(yǔ)言,簡(jiǎn)體中文為zh_CN headimgurl 用戶頭像,最后一個(gè)數(shù)值代表正方形頭像大小(有0、46、64、96、132數(shù)值可選,0代表640*640正方形頭像),用戶沒(méi)有頭像時(shí)該項(xiàng)為空。
若用戶更換頭像,原有頭像URL將失效。
subscribe_time 用戶關(guān)注時(shí)間,為時(shí)間戳。
如果用戶曾多次關(guān)注,則取最后關(guān)注時(shí)間 unionid 只有在用戶將公眾號(hào)綁定到微信開(kāi)放平臺(tái)帳號(hào)后,才會(huì)出現(xiàn)該字段。
remark 公眾號(hào)運(yùn)營(yíng)者對(duì)粉絲的備注,公眾號(hào)運(yùn)營(yíng)者可在微信公眾平臺(tái)用戶管理界面對(duì)粉絲添加備注 groupid 用戶所在的分組ID(兼容舊的用戶分組接口) tagid_list 用戶被打上的標(biāo)簽ID列表 subscribe_scene 返回用戶關(guān)注的渠道來(lái)源,ADD_SCENE_SEARCH 公眾號(hào)搜索,ADD_SCENE_ACCOUNT_MIGRATION 公眾號(hào)遷移,ADD_SCENE_PROFILE_CARD 名片分享,ADD_SCENE_QR_CODE 掃描二維碼,ADD_SCENEPROFILE LINK 圖文頁(yè)內(nèi)名稱點(diǎn)擊,ADD_SCENE_PROFILE_ITEM 圖文頁(yè)右上角菜單,ADD_SCENE_PAID 支付后關(guān)注,ADD_SCENE_OTHERS 其他 qr_scene 二維碼掃碼場(chǎng)景(開(kāi)發(fā)者自定義) qr_scene_str 二維碼掃碼場(chǎng)景描述(開(kāi)發(fā)者自定義) 錯(cuò)誤結(jié)果:
{
"errcode":40013,"errmsg":"invalid appid"}
三、使用判斷是否關(guān)注過(guò),此處為入口:
public function isConcern($appId, $appSecret) {
$param = '
'
;
// 如果有參數(shù) $this->getCode($appId, U('
callback'
, '
param='
.$param), 1 ,'
snsapi_base'
);
}
授權(quán)后回調(diào)public function callback(){
$isconcern = 0;
$code = $this->_get('
code'
);
$param = $this->_get('
param'
);
$appId = C('
appId'
);
// config中配置 $appSecret = C('
appSecret'
);
$accessTokenInfo = $this->getAccessToken($code, $appId, $appSecret);
$openId = $accessTokenInfo['
openid'
];
$accessToken = $accessTokenInfo['
access_token'
];
$token = $this->getToken($appId, $appSecret);
$userInfo = $this->getUserInfo($openId, $token['
access_token'
]);
if($userInfo['
subscribe'
] == 1){
$this->assign('
userInfo'
, $userInfo);
$isconcern = 1;
// 已關(guān)注 }
else {
$isconcern = 0;
// 未關(guān)注 }
$this->assign('
openid'
, $openId);
$this->display('
page'
);
}
此時(shí)頁(yè)面上可以獲取到userInfo和isconcern,isconcern為1時(shí)表示已關(guān)注公眾號(hào),否則未關(guān)注。
相關(guān)推薦:
微信公眾號(hào)開(kāi)發(fā) 微信公眾號(hào)判斷用戶是否已關(guān)注php代碼解析PHP判斷字符類型 php判斷用戶是否關(guān)注微信公眾號(hào)視頻:
公眾號(hào)的關(guān)注與取消操作-0基礎(chǔ)微信開(kāi)發(fā)入門以上就是還是代碼好用,幾步就能判斷用戶是否已關(guān)注公眾號(hào)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
微信
分享相關(guān)標(biāo)簽:
微信 公眾號(hào) javascript php 關(guān)注本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請(qǐng)注明出處,感謝您的尊重!
上一篇:
詳細(xì)步驟,zabbix配置微信企業(yè)號(hào)實(shí)現(xiàn)報(bào)警方法-附代碼
下一篇:
微信支付統(tǒng)一下單,用PHP怎么實(shí)現(xiàn)?(代碼全)相關(guān)文章相關(guān)視頻修改微信號(hào)有什么影響嗎?微信中共享實(shí)時(shí)位置什么意思數(shù)據(jù)庫(kù)設(shè)計(jì)的基本原則是什么?微信小程序調(diào)用圖片安全API還是代碼好用,幾步就能判斷用戶是否已關(guān)注公眾號(hào)打造自己的微信平臺(tái)微信開(kāi)發(fā)模式 接入自己的微信服務(wù)器開(kāi)發(fā)簡(jiǎn)單的微信計(jì)算器 微信在線音樂(lè)點(diǎn)播(上) [溫州做微信公眾號(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