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

Jadual Kandungan
一、微信公眾平臺(tái)配置
1. 獲取appid, appsecret,添加白名單
2. 添加網(wǎng)頁授權(quán)
二、php后端實(shí)現(xiàn)
1. 獲取全局token
2. 獲取用戶關(guān)聯(lián)公眾號(hào)的openid
3. 獲取用戶信息
三、使用
Rumah applet WeChat pembangunan WeChat 還是代碼好用,幾步就能判斷用戶是否已關(guān)注公眾號(hào)

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

Jul 25, 2018 pm 03:04 PM
javascript php Akaun rasmi fokus pada WeChat

現(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只展示一次,需保存下來,否則需要重置獲?。?。
獲取access_token時(shí)需要添加IP白名單。
2176278715-5b1f75b8a6790_articlex.png

點(diǎn)擊查看

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

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

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

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

1. 獲取全局token

此token有效期為2小時(shí),可以暫存起來,過期后需要重新獲取。
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)。)

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)頁面$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

通過getCode獲取到的code換取網(wǎng)頁授權(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)頁授權(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)頁,也會(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": "中國", 
        "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         用戶所在國家
        province        用戶所在省份
        language        用戶的語言,簡(jiǎn)體中文為zh_CN
        headimgurl      用戶頭像,最后一個(gè)數(shù)值代表正方形頭像大?。ㄓ?、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)營者對(duì)粉絲的備注,公眾號(hào)運(yùn)營者可在微信公眾平臺(tái)用戶管理界面對(duì)粉絲添加備注
        groupid         用戶所在的分組ID(兼容舊的用戶分組接口)
        tagid_list      用戶被打上的標(biāo)簽ID列表
        subscribe_scene 返回用戶關(guān)注的渠道來源,ADD_SCENE_SEARCH 公眾號(hào)搜索,ADD_SCENE_ACCOUNT_MIGRATION 公眾號(hào)遷移,ADD_SCENE_PROFILE_CARD 名片分享,ADD_SCENE_QR_CODE 掃描二維碼,ADD_SCENEPROFILE LINK 圖文頁內(nèi)名稱點(diǎn)擊,ADD_SCENE_PROFILE_ITEM 圖文頁右上角菜單,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"}

三、使用

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

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í)頁面上可以獲取到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ā)入門

Atas ialah kandungan terperinci 還是代碼好用,幾步就能判斷用戶是否已關(guān)注公眾號(hào). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mendapatkan ID sesi semasa dalam PHP? Bagaimana untuk mendapatkan ID sesi semasa dalam PHP? Jul 13, 2025 am 03:02 AM

Kaedah untuk mendapatkan ID sesi semasa dalam PHP adalah menggunakan fungsi session_id (), tetapi anda mesti menghubungi session_start () untuk berjaya mendapatkannya. 1. Panggil session_start () untuk memulakan sesi; 2. Gunakan session_id () untuk membaca ID Sesi dan mengeluarkan rentetan yang serupa dengan ABC123DEF456GHI789; 3 Jika pulangan kosong, periksa sama ada session_start () hilang, sama ada pengguna mengakses untuk kali pertama, atau sama ada sesi dimusnahkan; 4. ID Sesi boleh digunakan untuk pembalakan, pengesahan keselamatan dan komunikasi silang, tetapi keselamatan perlu diberi perhatian. Pastikan sesi itu diaktifkan dengan betul dan ID boleh diperolehi dengan jayanya.

Php mendapatkan substring dari rentetan Php mendapatkan substring dari rentetan Jul 13, 2025 am 02:59 AM

Untuk mengekstrak substrings dari rentetan php, anda boleh menggunakan fungsi substr (), iaitu substra sintaks (string $ string, int $ start ,? int $ panjang = null), dan jika panjang tidak ditentukan, ia akan dipintas hingga akhir; Apabila memproses aksara berbilang bit seperti Cina, anda harus menggunakan fungsi MB_SUBSTR () untuk mengelakkan kod yang dihiasi; Jika anda perlu memintas rentetan mengikut pemisah tertentu, anda boleh menggunakan Eksploitasi () atau menggabungkan StrPOS () dan Substr () untuk melaksanakannya, seperti mengekstrak sambungan nama fail atau nama domain.

Bagaimana anda melakukan ujian unit untuk kod PHP? Bagaimana anda melakukan ujian unit untuk kod PHP? Jul 13, 2025 am 02:54 AM

UnittestinginphpinvolvesveryingindividualcodeUnitsLikeFunctionsormethodstocatchbugsearlyandensurerurereliableFactoring.1) setupphpunitviacomposer, createatestdirectory, danconfigureautoloadandphpunit.xml.2soSteSteSteShpunit.xml.2)

Cara memisahkan rentetan ke dalam array dalam php Cara memisahkan rentetan ke dalam array dalam php Jul 13, 2025 am 02:59 AM

Dalam PHP, kaedah yang paling biasa adalah untuk memecah rentetan ke dalam array menggunakan fungsi eksploit (). Fungsi ini membahagikan rentetan ke dalam pelbagai bahagian melalui pembatas yang ditentukan dan mengembalikan array. Sintaks adalah eksploit (pemisah, rentetan, had), di mana pemisah adalah pemisah, rentetan adalah rentetan asal, dan had adalah parameter pilihan untuk mengawal bilangan maksimum segmen. Contohnya $ str = "epal, pisang, oren"; $ arr = meletup (",", $ str); Hasilnya ialah ["Apple", "Bana

Jenis Data JavaScript: Rujukan primitif vs Jenis Data JavaScript: Rujukan primitif vs Jul 13, 2025 am 02:43 AM

Jenis data JavaScript dibahagikan kepada jenis primitif dan jenis rujukan. Jenis primitif termasuk rentetan, nombor, boolean, null, undefined, dan simbol. Nilai -nilai tidak berubah dan salinan disalin apabila memberikan nilai, jadi mereka tidak mempengaruhi satu sama lain; Jenis rujukan seperti objek, tatasusunan dan fungsi menyimpan alamat memori, dan pembolehubah menunjuk objek yang sama akan mempengaruhi satu sama lain. Typeof dan Instanceof boleh digunakan untuk menentukan jenis, tetapi memberi perhatian kepada isu -isu sejarah TypeOfNull. Memahami kedua -dua jenis perbezaan ini dapat membantu menulis kod yang lebih stabil dan boleh dipercayai.

Menggunakan std :: chrono di c Menggunakan std :: chrono di c Jul 15, 2025 am 01:30 AM

STD :: Chrono digunakan dalam C untuk memproses masa, termasuk mendapatkan masa semasa, mengukur masa pelaksanaan, titik masa operasi dan tempoh, dan masa analisis pemformatan. 1. Gunakan std :: chrono :: system_clock :: sekarang () untuk mendapatkan masa semasa, yang boleh ditukar menjadi rentetan yang boleh dibaca, tetapi jam sistem mungkin tidak membosankan; 2. Gunakan std :: chrono :: steady_clock untuk mengukur masa pelaksanaan untuk memastikan monoton, dan mengubahnya menjadi milisaat, saat dan unit lain melalui duration_cast; 3. Titik masa (time_point) dan tempoh (tempoh) boleh saling beroperasi, tetapi perhatian harus dibayar kepada keserasian unit dan zaman jam (Epoch)

Bagaimana untuk lulus pemboleh ubah sesi ke halaman lain di PHP? Bagaimana untuk lulus pemboleh ubah sesi ke halaman lain di PHP? Jul 13, 2025 am 02:39 AM

Dalam PHP, untuk lulus pemboleh ubah sesi ke halaman lain, kunci adalah untuk memulakan sesi dengan betul dan menggunakan nama kunci $ _Session yang sama. 1. Sebelum menggunakan pembolehubah sesi untuk setiap halaman, ia mesti dipanggil session_start () dan diletakkan di hadapan skrip; 2. Set pembolehubah sesi seperti $ _Session ['username'] = 'Johndoe' pada halaman pertama; 3. Selepas memanggil session_start () pada halaman lain, akses pembolehubah melalui nama kunci yang sama; 4. Pastikan bahawa session_start () dipanggil pada setiap halaman, elakkan mengeluarkan kandungan terlebih dahulu, dan periksa bahawa laluan penyimpanan sesi pada pelayan boleh ditulis; 5. Gunakan SES

Bagaimanakah PHP mengendalikan pembolehubah persekitaran? Bagaimanakah PHP mengendalikan pembolehubah persekitaran? Jul 14, 2025 am 03:01 AM

ToAccessenVironmentVariablesInphp, useGetenv () orthe $ _envsuperglobal.1.getenv ('var_name') retrievesaspecificvariable.2. $ _ En V ['var_name'] AccessSvariablesifvariables_orderinphp.iniincludes "e" .setVariablesviacliwithvar = valuePhpscript.php, inapach

See all articles