Entwickeln Sie offizielle Dokumente auf der Grundlage des öffentlichen WeChat-Kontos:
Die Schritte zum Erhalten von Benutzerinformationen sind wie folgt:
1 Schritt 1: Der Benutzer stimmt der Autorisierung und dem Erhalt des Codes zu
2 Schritt 2: Tauschen Sie den Code gegen den Zugriffstoken für die Webseitenautorisierung aus
3 Schritt 3: Aktualisieren Sie den Zugriffstoken (falls erforderlich)
4 Schritt 4: Benutzerinformationen abrufen (Bereich snsapi_userinfo erforderlich)
1 Code abrufen
Unter der Voraussetzung, dass das öffentliche WeChat-Konto über den Autorisierungsbereich (Bereichsparameter) verfügt (nachdem das Dienstkonto die erweiterte Schnittstelle erhalten hat, verfügt es standardmäßig über snsapi_base und snsapi_userinfo im Bereichsparameter). , leiten Sie Follower an, die folgende Seite zu öffnen:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
Bei der Meldung „Auf den Link kann nicht zugegriffen werden“ prüfen Sie bitte, ob die Parameter falsch ausgefüllt sind und ob Sie über die dem Bereichsparameter entsprechenden Autorisierungsumfangsberechtigungen verfügen.
Besonderer Hinweis: Aufgrund der hohen Sicherheitsstufe von Autorisierungsvorgängen führt WeChat beim Initiieren einer Autorisierungsanfrage regelmäßig eine strenge Übereinstimmungsprüfung des Autorisierungslinks durch Bei falscher Reihenfolge ist auf die Autorisierungsseite kein normaler Zugriff möglich
Darunter:
AppID – die eindeutige Kennung des offiziellen Kontos
REDIRECT_URI – Sprung-URL
SCOPE - Der Wert ist snsapi_base (die Autorisierungsseite wird nicht angezeigt, springen Sie direkt zur Übertragung, nur die Benutzer-OpenID kann abgerufen werden) oder snsapi_userinfo (die Autorisierungsseite wird angezeigt und der Spitzname, das Geschlecht und der Standort können über openid abgerufen werden. Darüber hinaus , auch wenn der Benutzer nicht folgt, können die Informationen abgerufen werden, sofern der Benutzer dies autorisiert)
STATE - Entwickler können den Parameterwert von a-zA-Z0-9
2 anpassen und austauschen der Code für die Webseitenautorisierung access_token
Wenn der Benutzer der Autorisierung zustimmt, springt die Seite zu „redirect_uri/?code =CODE&state=STATE“.
state ist der STATE-Parameter, der wie oben übergeben wird
Implementierungscode:
<code class="hljs php">$code = I('get.code'); if (empty($code)) { //todo 非微信访问 exit('</code>'); }else{ //授权后操作 }
Hier können wir den Code verwenden für den späteren Erwerb von access_token.
Nach Erhalt des Codes fordern Sie den folgenden Link an, um access_token zu erhalten:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret= SECRET&code=CODE&grant_type =authorization_code
appid – die eindeutige Kennung des offiziellen Kontos
secret – Schlüssel
code – der oben zurückgegebene Code
grant_type – der Wert istauthorization_code
Implementierungscode:
<code class="hljs bash">$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token'];</code>
Das access_token hier kann zwischengespeichert werden, um eine häufige Erfassung des
Implementierungscodes zu vermeiden. Nehmen Sie das TP-Framework als Beispiel:
<code class="hljs php">$access_token = S('access_token'); if (empty($access_token)) { $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token']; S('access_token', $access_token, 3600); }</code>
Nach Erhalt des access_token wird auch zusammen mit openid (eindeutige Kennung des Benutzers) zurückgegeben. Das offizielle Dokument von WeChat erklärt: Die eindeutige Kennung des Benutzers. Bitte beachten Sie, dass, wenn der Benutzer nicht dem offiziellen Konto folgt, wenn der Benutzer die Webseite des offiziellen Kontos besucht, eine eindeutige OpenID verwendet wird Der Benutzer und das offizielle Konto werden ebenfalls generiert
openid identifiziert einen WeChat-Benutzer eindeutig. Wenn sich der Benutzer nicht zum ersten Mal anmeldet, können Sie die Datenbank abfragen, nachdem Sie die openid erhalten haben Es gibt einen Benutzer, der an diese OpenID gebunden ist. Danach müssen die Benutzerdaten nicht erneut abgerufen werden, und die Datenbank-Benutzer-ID wird direkt abgerufen. Richten Sie die Sitzung ein und melden Sie sich direkt an, um darauf zuzugreifen.
3 Ignorieren Der dritte Schritt und das access_token nur bei Bedarf erneut abrufen
4 Benutzerinformationen abrufen (muss den Bereich snsapi_userinfo haben)
Wenn die Datenbank nicht an diesen WeChat-ID-Benutzer gebunden ist, ist sie gleichwertig Beim ersten Besuch und der ersten Anmeldung des Benutzers werden die Benutzerinformationen im vierten Schritt abgerufen (im Fall der Benutzerautorisierung lautet der Autorisierungsbereich der Webseite snsapi_userinfo, dann kann der Entwickler access_token und openid-Pull-Benutzerinformationen übergeben) und dann einen Benutzer erstellen im Hintergrund und binden Sie diesen WeChat-Benutzer
(über openid)
Request-Methode
http: GET (bitte https-Protokoll verwenden) https:/ /api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
access_token – das oben erhaltene access_token
openid – Die eindeutige Kennung des öffentlichen Kontos
Implementierungscode:
<code class="hljs php">$access_token = S('access_token'); if (empty($access_token)) { $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token']; S('access_token', $access_token, 3600); }</code>
Die oben genannten Schritte sind die spezifischen Schritte für das öffentliche WeChat-Konto, um Benutzerinformationen zu erhalten.