Heim  >  Artikel  >  WeChat-Applet  >  Implementierungsschritte für den Erhalt von Benutzerinformationen für das öffentliche WeChat-Konto (Erfassung der Webseitenautorisierung).

Implementierungsschritte für den Erhalt von Benutzerinformationen für das öffentliche WeChat-Konto (Erfassung der Webseitenautorisierung).

伊谢尔伦
伊谢尔伦Original
2016-11-21 15:49:393053Durchsuche

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(&#39;get.code&#39;);
if (empty($code)) {
   //todo 非微信访问
   exit(&#39;</code>&#39;);
 }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 = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);
$str = file_get_contents($url);
$str = json_decode($str, true);
$access_token = $str[&#39;access_token&#39;];</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(&#39;access_token&#39;);
if (empty($access_token)) {
  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);
  $str = file_get_contents($url);
  $str = json_decode($str, true);
  $access_token = $str[&#39;access_token&#39;];
  S(&#39;access_token&#39;, $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(&#39;access_token&#39;);
if (empty($access_token)) {
  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);
  $str = file_get_contents($url);
  $str = json_decode($str, true);
  $access_token = $str[&#39;access_token&#39;];
  S(&#39;access_token&#39;, $access_token, 3600);
}</code>

Die oben genannten Schritte sind die spezifischen Schritte für das öffentliche WeChat-Konto, um Benutzerinformationen zu erhalten.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn