


Der Code ist weiterhin einfach zu verwenden und Sie k?nnen in wenigen Schritten feststellen, ob der Benutzer dem offiziellen Konto gefolgt ist.
Jul 25, 2018 pm 03:04 PMViele der heutigen Aktivit?ten führen Benutzer dazu, ?ffentlichen Konten zu folgen, um an den Aktivit?ten teilzunehmen. Wie Sie feststellen k?nnen, ob ein Benutzer einem ?ffentlichen Konto gefolgt ist, müssen Sie sich keine Sorgen mehr machen Der PHP-Code wird in diesem Artikel sehr einfach erkl?rt.
1. Konfiguration der ?ffentlichen WeChat-Plattform
1. Appid, Appsecret abrufen, Whitelist hinzufügen
Melden Sie sich bei der ?ffentlichen WeChat-Plattform an und geben Sie die Grundkonfiguration ein. In der Entwicklung müssen zwei Parameter verwendet werden: appId und appSecret (appSecret wird nur einmal angezeigt und muss gespeichert werden, andernfalls muss es zurückgesetzt und abgerufen werden).
Sie müssen eine IP-Whitelist hinzufügen, wenn Sie access_token erhalten.
Zum Anzeigen klicken
Zum ?ndern klicken
2. Webseitenautorisierung hinzufügen
Geben Sie die offiziellen Kontoeinstellungen ein=》Funktionseinstellungen=》Webseite autorisierter Dom?nennameKlicken Sie auf Einstellungen, geben Sie den Dom?nennamen der Autorisierungsrückrufseite in das Eingabefeld ein, siehe Punkt 1 (nur einer). ausgefüllt werden kann), laden Sie den TXT unter Punkt 3 herunter. Dokumente werden in das Root-Verzeichnis des Servers hochgeladen.
2. PHP-Backend-Implementierung
1. Erhalten Sie ein globales Token
Dieses Token ist 2 Stunden lang gültig und kann vorübergehend gespeichert werden nach Ablauf erforderlich Reacquire.
PS: Das Projekt muss dieselbe Schnittstelle verwenden, sonst kann es leicht passieren, dass es sich gegenseitig berührt und zum Ablauf führt.
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. Das Abrufen der OpenID des mit dem Benutzer verknüpften ?ffentlichen Kontos
ist ein zweistufiger Prozess. Besorgen Sie sich zun?chst den Autorisierungscode des Benutzers für das ?ffentliche Konto und verwenden Sie dann diesen Code um das tempor?re access_token und die openid zu erhalten.
Benutzerautorisierungscode abrufen
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
Der über getCode erhaltene Code wird gegen das von der Webseite autorisierte access_token und openid ausgetauscht
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. Benutzerinformationen abrufen
Verwenden Sie zuerst die in Schritt 2 erhaltene openId und das in Schritt 1 erhaltene Token, um Benutzerinformationen zu erhalten
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 用戶的語言,簡體中文為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"}
3. Verwenden Sie
, um festzustellen, ob Sie dem gefolgt sind. Hier ist der Eingang :
public function isConcern($appId, $appSecret) { $param = ''; // 如果有參數(shù) $this->getCode($appId, U('callback', 'param='.$param), 1 ,'snsapi_base'); }
Rückruf nach Autorisierung
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'); }
Zu diesem Zeitpunkt k?nnen userInfo und isconcern auf der Seite abgerufen werden. Wenn isconcern 1 ist, bedeutet dies, dass dem offiziellen Konto gefolgt wurde nicht befolgt worden.
Verwandte Empfehlungen:
PHP bestimmt der Zeichentyp PHP Bestimmen Sie, ob der Benutzer dem ?ffentlichen WeChat-Konto folgt
Das obige ist der detaillierte Inhalt vonDer Code ist weiterhin einfach zu verwenden und Sie k?nnen in wenigen Schritten feststellen, ob der Benutzer dem offiziellen Konto gefolgt ist.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PhpisstillrelevantinMoDernEnterpriseEnvironments.1.ModerPhp (7.xand8.x) Angebote, strenge, jitkompilation und moderne Syntax, machte ma?geschneiderte Foreiglableforlarge-ScaleApplikationen

Vermeiden Sie N 1 Abfrageprobleme, reduzieren Sie die Anzahl der Datenbankabfragen, indem Sie die zugeh?rigen Daten im Voraus laden. 2. W?hlen Sie nur die erforderlichen Felder aus, um das Laden vollst?ndiger Entit?ten zu vermeiden, um Speicher und Bandbreite zu sparen. 3.. Verwenden Sie Cache-Strategien vernünftigerweise, z. 4. Optimieren Sie den Lebenszyklus der Entit?t und rufen Sie Clear () regelm??ig an, um den Speicher freizugeben, um den Speicherüberlauf zu verhindern. 5. Stellen Sie sicher, dass der Datenbankindex die generierten SQL -Anweisungen existiert und analysiert, um ineffiziente Abfragen zu vermeiden. 6. Deaktivieren Sie die automatische ?nderungsverfolgung in Szenarien, in denen ?nderungen nicht erforderlich sind, und verwenden Sie Arrays oder Leichtgewichtsmodi, um die Leistung zu verbessern. Die korrekte Verwendung von ORM erfordert die Kombination der SQL -überwachung, -gespeicherung, der Stapelverarbeitung und der geeigneten Optimierung, um die Anwendungsleistung zu gew?hrleisten und gleichzeitig die Entwicklungseffizienz beizubehalten.

Um einen flexiblen PHP -Microservice zu erstellen, müssen Sie Rabbitmq verwenden, um eine asynchrone Kommunikation zu erreichen. 1. Decken Sie den Dienst über Nachrichtenwarteschlangen ab, um Kaskadenfehler zu vermeiden. 2. Konfigurieren Sie persistente Warteschlangen, anhaltende Nachrichten, Freigabebest?tigung und manuelles ACK, um die Zuverl?ssigkeit zu gew?hrleisten. 3.. Verwenden Sie exponentielle Backoff -Wiederholung, TTL und Dead Letter -Warteschlangenverarbeitungsfehler; 4. Verwenden Sie Tools wie Supervisford, um Verbraucherprozesse zu schützen und Herzschlagmechanismen zu erm?glichen, um die Gesundheit der Service zu gew?hrleisten. und letztendlich die F?higkeit des Systems erkennen, kontinuierlich in Fehlern zu arbeiten.

Verwenden Sie Subprozess.run (), um die Befehle von Shell sicher auszuführen und die Ausgabe zu erfassen. Es wird empfohlen, Parameter in Listen zu übergeben, um Einspritzrisiken zu vermeiden. 2. Wenn die Shell -Eigenschaften erforderlich sind, k?nnen Sie Shell = True einstellen, aber achten Sie auf die Befehlsinjektion. 3. verwenden subprocess.popen, um die Echtzeit-Ausgangsverarbeitung zu realisieren. 4. Setzen Sie check = true, um Ausnahmen zu werfen, wenn der Befehl fehlschl?gt. 5. Sie k?nnen direkt Ketten anrufen, um die Ausgabe in einem einfachen Szenario zu erhalten. Sie sollten Subprozess vorrangig machen. Die obigen Methoden überschreiben die Kernverwendung der Ausführung von Shell -Befehlen in Python.

Die Verwendung des richtigen PHP-Basisbildes und die Konfiguration einer sicheren, leistungsoptimierten Docker-Umgebung ist der Schlüssel zum Erreichen der Produktion. 1. W?hlen Sie PHP: 8,3-FPM-Alpine als Grundbild, um die Angriffsfl?che zu reduzieren und die Leistung zu verbessern. 2. Deaktivieren Sie gef?hrliche Funktionen über benutzerdefinierte Php.ini, deaktivieren Sie die Fehleranzeige und aktivieren Sie Opcache und JIT, um die Sicherheit und Leistung zu verbessern. 3.. Verwenden Sie Nginx als Reverse Proxy, um den Zugriff auf sensible Dateien einzuschr?nken und die PHP-Anforderungen korrekt an PHP-FPM weiterzuleiten. 4. Verwenden Sie mehrstufige Optimierungsbilder, um Entwicklungsabh?ngigkeiten zu entfernen, und richten Sie nicht Root-Benutzer auf, um Container auszuführen. 5. optionaler Aufsichtsbeh?rde zum Verwalten mehrerer Prozesse wie Cron; 6. überprüfen

Die Datei "Settings.JSON" befindet sich auf dem Pfad auf Benutzerebene oder Arbeitsbereichsebene und wird verwendet, um die VSCODE-Einstellungen anzupassen. 1. Benutzer-Level-Pfad: Windows ist C: \ Benutzer \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS is /users//library/applicationsupport/code/user/settings.json, Linux is /home/.config/code/usser/setings.json; 2. Pfad auf Arbeitsbereichsebene: .VSCODE/Einstellungen im Projekt Root Directory

Der Müllsammlung von PHP basiert auf der Referenzz?hlung, aber kreisf?rmige Referenzen müssen von einem periodischen kreisf?rmigen Müllsammler verarbeitet werden. 1. Die Referenzzahl gibt den Speicher sofort frei, wenn keine Referenz auf die Variable vorhanden ist. 2. Referenzreferenz bewirkt, dass Speicher nicht automatisch freigegeben werden kann, und es h?ngt davon ab, dass GC ihn erfasst und reinigt. 3.. GC wird ausgel?st, wenn das "m?gliche Wurzel" den Schwellenwert erreicht oder manuell gc_collect_cycles () aufruft; 4. Langzeit laufende PHP-Anwendungen sollten gc_status () überwachen und rechtzeitig gc_collect () aufrufen, um Speicherleckage zu vermeiden. 5. Zu den Best Practices geh?rt die Vermeidung von kreisf?rmigen Referenzen, die Verwendung von gc_disable () zur Optimierung der Leistungsschlüsselbereiche und Dereference -Objekte über die Clear () -Methode des ORM.

Mit Bref erm?glicht es PHP-Entwicklern, skalierbare, kostengünstige Anwendungen zu erstellen, ohne Server zu verwalten. 1.Bref bringt Php nach AWSLambda, indem er eine optimierte PHP -Laufzeitschicht bereitstellt, Php8.3 und andere Versionen unterstützt und sich nahtlos in Frameworks wie Laravel und Symfony integriert. 2.. 3. Führen Sie den Befehl ServerlessDeploy aus, um die Bereitstellung abzuschlie?en, apiCateway automatisch zu konfigurieren und Zugriffs -URLs zu generieren. 4. Für Lambda -Beschr?nkungen bietet BREF L?sungen.
