国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

還是代碼好用,幾步就能判斷用戶是否已關(guān)注公眾號(hào)

php是最好的語(yǔ)言
發(fā)布: 2018-07-25 15:04:32
原創(chuàng)
9865人瀏覽過

現(xiàn)在的活動(dòng),很多都引導(dǎo)用戶關(guān)注公眾號(hào),才能參與活動(dòng),如何判斷用戶是否已關(guān)注公眾號(hào),其實(shí)很簡(jiǎn)單,照著本文章,你就不會(huì)再犯愁了,本文的php代碼很詳細(xì)的解說了。

一、微信公眾平臺(tái)配置

1. 獲取appid, appsecret,添加白名單

登錄微信公眾平臺(tái),進(jìn)入基本配置。開發(fā)中需要用到兩個(gè)參數(shù),appId和appSecret(appSecret只展示一次,需保存下來(lái),否則需要重置獲?。?。
獲取access_token時(shí)需要添加IP白名單。
2176278715-5b1f75b8a6790_articlex.png

點(diǎn)擊查看

1745865697-5b1f74d242c17_articlex.png
點(diǎn)擊修改
3178119774-5b1f74ff033be_articlex.png

2. 添加網(wǎng)頁(yè)授權(quán)

進(jìn)入公眾號(hào)設(shè)置=》功能設(shè)置=》網(wǎng)頁(yè)授權(quán)域名
11.png點(diǎn)擊設(shè)置,input框中輸入授權(quán)回調(diào)頁(yè)的域名參考第1點(diǎn)(只能填寫一個(gè)),下載第3點(diǎn)中的txt文檔,上傳至服務(wù)器的根目錄。
22.png

二、php后端實(shí)現(xiàn)

1. 獲取全局token

此token有效期為2小時(shí),可以暫存起來(lái),過期后需要重新獲取。
PS: 項(xiàng)目中必須走同一個(gè)接口,否則容易互刷導(dǎo)致過期。

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ù)說明:
    參數(shù)              說明
    access_token      獲取到的全局token
    expires_in        憑證有效時(shí)間,單位:秒
    
錯(cuò)誤返回結(jié)果:
    {"errcode": 40013, "errmsg": "invalid appid"}
    返回結(jié)果參數(shù)說明:
    返回碼    說明
    -1       系統(tǒng)繁忙,此時(shí)請(qǐng)開發(fā)者稍候再試
    0        請(qǐng)求成功
    40001    AppSecret錯(cuò)誤或者AppSecret不屬于這個(gè)公眾號(hào),請(qǐng)開發(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)。)
登錄后復(fù)制

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ù)說明:
    返回碼    說明
    10003    redirect_uri域名與后臺(tái)配置不一致
    10004    此公眾號(hào)被封禁
    10005    此公眾號(hào)并沒有這些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    不支持微信開放平臺(tái)的Appid,請(qǐng)使用公眾號(hào)Appid
登錄后復(fù)制

通過getCode獲取到的code換取網(wǎng)頁(yè)授權(quán)的access_token和openid

public 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ù)說明
    參數(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í),用戶訪問公眾號(hào)的網(wǎng)頁(yè),也會(huì)產(chǎn)生一個(gè)用戶和公眾號(hào)唯一的OpenID
    scope    用戶授權(quán)的作用域,使用逗號(hào)(,)分隔
    
錯(cuò)誤返回結(jié)果:
    {"errcode":40029, "errmsg":"invalid code"}
登錄后復(fù)制

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ù)說明:
        參數(shù)            說明
        subscribe       用戶是否訂閱該公眾號(hào)標(biāo)識(shí),值為0時(shí),代表此用戶沒有關(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正方形頭像),用戶沒有頭像時(shí)該項(xiàng)為空。若用戶更換頭像,原有頭像URL將失效。
        subscribe_time  用戶關(guān)注時(shí)間,為時(shí)間戳。如果用戶曾多次關(guān)注,則取最后關(guān)注時(shí)間
        unionid         只有在用戶將公眾號(hào)綁定到微信開放平臺(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)景(開發(fā)者自定義)
        qr_scene_str    二維碼掃碼場(chǎng)景描述(開發(fā)者自定義)

錯(cuò)誤結(jié)果:
    {"errcode":40013,"errmsg":"invalid appid"}
登錄后復(fù)制

三、使用

判斷是否關(guān)注過,此處為入口:

public function isConcern($appId, $appSecret) {
    $param = ''; // 如果有參數(shù)
    $this->getCode($appId, U('callback', 'param='.$param), 1 ,'snsapi_base');
}
登錄后復(fù)制

授權(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');
}
登錄后復(fù)制

此時(shí)頁(yè)面上可以獲取到userInfo和isconcern,isconcern為1時(shí)表示已關(guān)注公眾號(hào),否則未關(guān)注。

相關(guān)推薦:

微信公眾號(hào)開發(fā) 微信公眾號(hào)判斷用戶是否已關(guān)注php代碼解析

PHP判斷字符類型 php判斷用戶是否關(guān)注微信公眾號(hào)

視頻:公眾號(hào)的關(guān)注與取消操作-0基礎(chǔ)微信開發(fā)入門

以上就是還是代碼好用,幾步就能判斷用戶是否已關(guān)注公眾號(hào)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
相關(guān)標(biāo)簽:
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問題
開源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)