Heim  >  Artikel  >  WeChat-Applet  >  So erhalten Sie Benutzerinformationen durch Webseitenautorisierung

So erhalten Sie Benutzerinformationen durch Webseitenautorisierung

Y2J
Y2JOriginal
2017-05-11 13:02:322243Durchsuche

Die Schritte zum Erhalten von Benutzerinformationen sind wie folgt:

1 Schritt 1: Der Benutzer erklärt sich damit einverstanden, den Code zu autorisieren und zu erhalten
2 Schritt 2: Tauschen Sie den Code gegen das Access_token für die Webseitenautorisierung aus
3 Schritt 3: Access_token aktualisieren (falls erforderlich)
4 Schritt 4: Benutzerinformationen abrufen (Bereich snsapi_userinfo erforderlich)

1 Code abrufen

Stellen Sie sicher, dass WeChat öffentlich ist Das Konto verfügt über einen Autorisierungsbereich (Bereichsparameter) (nachdem das Dienstkonto die erweiterte Schnittstelle erhalten hat, verfügt es standardmäßig über snsapi_base und snsapi_userinfo im Bereichsparameter). Führen Sie Follower dazu, die folgende Seite zu öffnen:

Öffnen Sie .weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

Wenn die Meldung erscheint: „Auf den Link kann nicht zugegriffen werden.“ "Bitte überprüfen Sie, ob die Parameter falsch ausgefüllt sind und ob die Autorisierungsbereichsberechtigung vorhanden ist, die dem Bereichsparameter entspricht.

Besonderer Hinweis: Da der Autorisierungsvorgang sicher ist, führt WeChat bei der Initiierung einer Autorisierungsanfrage regelmäßig eine strenge Übereinstimmungsprüfung des Autorisierungslinks durch Wenn einer der Parameter des Links „Nein“ lautet, ist die Autorisierungsseite normalerweise nicht zugänglich.

Unter anderem:

AppID – die eindeutige Kennung des offiziellen Kontos
REDIRECT_URI – Sprung URL
SCOPE - Der Wert ist snsapi_base (nicht Die Autorisierungsseite wird angezeigt und springt direkt. Sie können nur die OpenID des Benutzers abrufen) oder snsapi_userinfo (Die Autorisierungsseite wird angezeigt. Sie können den Spitznamen, das Geschlecht und den Standort über OpenID abrufen . Darüber hinaus können Sie, auch wenn Sie nicht aufpassen, diese Informationen erhalten, sofern der Benutzer dies zulässt.
STATE - Entwickler können den Parameterwert von a-zA-Z0-9 anpassen

2 Tauschen Sie den Code für die Webseitenautorisierung aus, 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 für die anschließende Erfassung von access_token erhalten.

Nachdem Sie den Code erhalten haben, fordern Sie den folgenden Link an, um das Access_token zu erhalten:

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
geheim – Schlüssel
Code – der oben zurückgegebene Code
grant_type – der Wert ist Authorization_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>

Hier kann das Zugriffstoken zwischengespeichert werden, um eine häufige Erfassung von
Implementierungscode zu vermeiden. Nehmen Sie als Beispiel das TP Framework

Nach Erhalt des access_token wird auch die openid (die eindeutige Kennung des Benutzers) zurückgegeben. Im offiziellen WeChat-Dokument wird Folgendes erläutert: Die eindeutige Kennung des Benutzers. Bitte beachten Sie, dass eine eindeutige Kennung vorliegt, wenn der Benutzer nicht dem offiziellen Konto folgt Benutzer und offizielles Konto werden ebenfalls generiert.
 <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>


openid identifiziert einen WeChat-Benutzer eindeutig. Wenn sich der Benutzer nicht zum ersten Mal anmeldet, kann er

abfragen

ob ein Benutzer an diese OpenID in der Datenbank gebunden ist, und dann ist es nicht erforderlich, die Benutzerdaten erneut abzurufen. Rufen Sie die Datenbankbenutzer-ID-Einstellung Sitzung direkt ab und melden Sie sich direkt an, um auf zuzugreifen 3 Ignorieren Sie den dritten Schritt und rufen Sie das access_token nur bei Bedarf erneut ab.

4. Benutzerinformationen abrufen (muss den Bereich snsapi_userinfo haben)

Wenn die Datenbank nicht an diesen WeChat gebunden ist Die ID des Benutzers entspricht dem ersten Besuch und der ersten Anmeldung des Benutzers. Die Benutzerinformationen werden im vierten Schritt (nach der Benutzerautorisierung) abgerufen. In diesem Fall lautet der Autorisierungsbereich der Webseite snsapi_userinfo, dann kann der Entwickler Benutzerinformationen abrufen access_token und openid) und erstellen Sie dann einen Benutzer im Hintergrund und binden Sie diesen WeChat-Benutzer

(über openid)


Anfragemethode


http: GET (bitte https-Protokoll verwenden) api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&

lang

=zh_CNaccess_token – das erhaltene access_token oben

openid – die eindeutige Kennung des öffentlichen Kontos



Implementierungscode:

Die oben genannten Schritte sind die spezifischen Schritte für das offizielle WeChat-Konto, um Benutzerinformationen zu erhalten.
 <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>

[Verwandte Empfehlungen]

1.

Quellcode der WeChat-Plattform herunterladen

2.

Weizhichuang T+ WeChat-Roboter-Quellcode

Das obige ist der detaillierte Inhalt vonSo erhalten Sie Benutzerinformationen durch Webseitenautorisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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