Heim > Backend-Entwicklung > PHP-Tutorial > PHP implementiert die Entwicklung der Anmeldeautorisierung für WeChat-Webseiten

PHP implementiert die Entwicklung der Anmeldeautorisierung für WeChat-Webseiten

不言
Freigeben: 2023-03-24 12:36:01
Original
14706 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Implementierung der WeChat-Webseiten-Anmeldeautorisierung vor. Er hat einen gewissen Referenzwert. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.

WeChat open Plattform und die Öffentlichkeit Unterschiede zwischen Plattformen

1 Öffentliche Plattformen sind für normale Benutzer wie Self-Media und Medien gedacht und werden natürlich von Betreibern offizieller WeChat-Konten verwendet Das Team oder Unternehmen verfügt über die Stärke, einige Inhalte zu entwickeln und kann auch Schnittstellen auf der öffentlichen Plattform aufrufen, z. B. benutzerdefinierte Menüs, automatische Antworten und Abfragefunktionen. Derzeit tun die meisten WeChat dies, nachdem sie die Zertifizierung bestanden haben.

mp.weixin.qq.com


2. Die offene Plattform richtet sich an Entwickler und unabhängige Softwareentwickler von Drittanbietern. Ich denke, die größte Offenheit der Entwicklungsplattform ist die WeChat-Anmeldung. Zu diesem Zeitpunkt unternahm Tencent keine großen Anstrengungen, um eine einheitliche Anmeldung zu implementieren. Daher muss nun jede Website einen Anmeldemechanismus entwickeln. Glücklicherweise verstehen sie jetzt die Situation. Entwickler oder Softwareentwickler können über die von WeChat bereitgestellte Plattform und Schnittstelle für Unternehmen geeignete E-Commerce-Websites entwickeln, den QR-Code scannen, um eine Spieloberfläche aufzurufen, und dann Waren kaufen. Natürlich wird die nachfolgende offene Plattform die Zahlungsschnittstelle öffnen, sodass Softwareentwickler wie Pocket Tong Dienste und Software wie WeChat-Shops für große, kleine und mittlere Unternehmen bereitstellen können.

open.weixin.qq.com

Die öffentliche Plattform ist das Verwaltungs- und Entwicklungs-Backend für Dienstkonto-Abonnementkonten.

Einfach ausgedrückt besteht die Entwicklungsplattform darin, den Inhalt der auf dem Mobiltelefon installierten Software mit einem Klick an den Freundeskreis weiterzugeben

Der folgende Drittanbieter Die Anmeldung basiert auf der offenen Plattform (open.weixin.qq.com). Funktionen

Vorbereitungsarbeiten

Website-Anwendung WeChat-Anmeldung ist ein von WeChat OAuth2.0 autorisiertes Anmeldesystem basierend auf dem OAuth2.0-Protokollstandard.

Bevor Sie WeChat OAuth2 durchführen, registrieren Sie ein Entwicklerkonto auf der offenen WeChat-Plattform und erhalten Sie die entsprechende AppID und AppSecret Nachdem Sie sich angemeldet und die Prüfung bestanden haben, können Sie den Zugangsprozess starten.

Beschreibung des Autorisierungsprozesses

Mit der autorisierten WeChat OAuth2.0-Anmeldung können WeChat-Benutzer ihre WeChat-Identität verwenden, um sich sicher bei Anwendungen oder Websites Dritter anzumelden, und der WeChat-Benutzer autorisiert die Anmeldung Dritte, die auf WeChat OAuth2.0 zugegriffen haben Nach der Anwendung kann der Dritte die Anmeldeinformationen für die Schnittstelle des Benutzers (access_token) abrufen und mit dem access_token die Schnittstelle für die Autorisierungsbeziehung der offenen Plattform von WeChat aufrufen und so die grundlegenden offenen Informationen von WeChat-Benutzern erhalten Unterstützung der Benutzer bei der Implementierung grundlegender offener Funktionen.

Die autorisierte WeChat OAuth2.0-Anmeldung unterstützt derzeit den Authorization_Code-Modus, der für die serverseitige Anwendungsautorisierung geeignet ist. Der Gesamtprozess dieses Modells ist:

1. Der Dritte initiiert eine WeChat-Autorisierungs-Anmeldeanfrage. Nachdem der WeChat-Benutzer die Autorisierung der Drittanbieteranwendung zulässt, startet WeChat die Anwendung oder leitet zur Drittanbieteranwendung weiter. Party-Website und bringen Sie den temporären Autorisierungscode-Parameter mit.

2. Fügen Sie AppID und AppSecret über den Code-Parameter hinzu und tauschen Sie access_token aus.

Access_token-Sequenzdiagramm abrufen:


Schritt 1: CODE anfordern
Autorisierung für die Nutzung durch Dritte Website-Anwendungen Bitte beachten Sie vor dem Anmelden, dass Sie über den entsprechenden Webseiten-Autorisierungsbereich (scope=snsapi_login) verfügen. Sie können den folgenden Link auf dem PC öffnen:
https://open.weixin.qq.com/connect /qrconnect?appid=APPID&redirect_uri= REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect


Wenn die Meldung „Auf den Link kann nicht zugegriffen werden“ angezeigt wird, überprüfen Sie bitte, ob die Parameter falsch eingegeben wurden „redirect_uri“ stimmt nicht mit dem bei der Überprüfung eingegebenen autorisierten Domänennamen überein oder der Bereich ist nicht snsapi_login.

appid ist Eindeutige App-IDredirect_uri ist Umleitungsadresse muss UrlEncode seinresponse_type ist Füllen Sie den Code ausGeltungsbereich ist Wenn Sie mehrere Bereiche haben, trennen Sie diese durch Kommas (,). Für Webanwendungen müssen Sie derzeit nur snsapi_login ausfüllenZustandNeinParameterbeschreibung
Parameter

Ist es notwendig

Beschreibung

wird verwendet, um den Status der Anfrage und des Rückrufs beizubehalten und ihn nach der Autorisierung der Anfrage so an den Dritten zurückzugeben, wie er ist. Dieser Parameter kann verwendet werden, um CSRF-Angriffe (Cross-Site-Request-Forgery-Angriffe) zu verhindern. Es wird empfohlen, dass Dritte diesen Parameter zur Überprüfung auf eine einfache Zufallszahl plus Sitzung setzen

Rückgabebeschreibung
Nachdem der Benutzer die Autorisierung zugelassen hat, wird er zur URL „redirect_uri“ mit den Code- und Statusparametern

Wenn der Benutzer die Autorisierung verbietet, wird der Codeparameter nach der Umleitung nicht übertragen, sondern nur der Statusparameter

redirect_uri?code=CODE&state=STATE

Anfrage Beispiel

redirect_uri?state=STATEMelden Sie sich bei der Yihaodian-Website-Anwendung an

https://passport.yhd.com/wechat/login.do

Nach dem Öffnen generiert der Yihaodian den Status Parameter und springen Sie zu

https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpassport.yhd.com%2Fwechat%2Fcallback.do&response_type=code&scope=

snsapi_login

&state=. 3d6be0a4035d839573b04816624a415e#wechat_redirect


https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https%3A%2F%2Fpass port.yhd.com%2Fwechat%2 Fcallback.do&response_type=code&scope=snsapi_login&state =eb407f95fbc413185209fd85931761c2#wechat_redirectNachdem WeChat-Benutzer den QR-Code mit WeChat gescannt und die Anmeldung bestätigt haben, springt der PC zu

https://passport.yhd.com /wechat/callback.do ?code=CODE&state=3d6be0a4035d839573b04816624a415e

Die zweite Möglichkeit, den Code zu erhalten, unterstützt die Website dabei, den WeChat-Login-QR-Code in ihre eigene Seite einzubetten, und Der Benutzer verwendet WeChat, um den Code zur Autorisierung zu scannen. Anschließend wird der Code über JS an die Website zurückgegeben.

Der Hauptzweck der JS WeChat-Anmeldung: Die Website hofft, dass Benutzer die Anmeldung innerhalb der Website abschließen können, ohne zur WeChat-Domäne springen zu müssen, um sich anzumelden und dann zurückzukehren, um die Sprachkompetenz und Erfolgsquote zu verbessern WeChat-Login. So implementieren Sie JS für die in die Website eingebettete QR-Code-WeChat-Anmeldung: Schritt 1: Führen Sie zunächst die folgende JS-Datei in die Seite ein (https wird unterstützt):

Schritt 2: Instanzieren Sie das folgende JS-Objekt, bei dem eine WeChat-Anmeldung erforderlich ist:

Parameter
   varobj = new WxLogin({
                            id:"login_container", 
                            appid: "", 
                            scope: "", 
                            redirect_uri: "",
                            state: "",
                            style: "",
                            href: ""
                          });
Nach dem Login kopieren

参数

是否必须

说明

id

第三方页面显示二维码的容器id

appid

应用唯一标识,在微信开放平台提交应用审核通过后获得

scope

应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可

redirect_uri

重定向地址,需要进行UrlEncode

state

用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验

style

提供"black"、"white"可选,默认为黑色文字描述。详见文档底部FAQ

href

自定义样式链接,第三方可根据实际需求覆盖默认样式。详见文档底部FAQ

<🎜>

<🎜>Ist es notwendig<🎜><🎜><🎜><🎜>

<🎜>Beschreibung<🎜><🎜><🎜><🎜><🎜><🎜>id<🎜><🎜><🎜><🎜> ist <🎜><🎜 ><🎜> <🎜>Die Container-ID des QR-Codes, der auf der Drittanbieterseite angezeigt wird<🎜><🎜><🎜><🎜><🎜>appid<🎜><🎜><🎜>< 🎜> ist <🎜><🎜 ><🎜><🎜>Die eindeutige Identifikation des Antrags wird nach Einreichung des Antrags zur Prüfung auf der offenen WeChat-Plattform erhalten<🎜><🎜><🎜><🎜>< 🎜>Bereich<🎜><🎜><🎜>< 🎜>Ja<🎜><🎜><🎜><🎜> Anwendungsautorisierungsbereich, mit mehreren durch Kommas (,) getrennten Bereichen, Webanwendungen müssen derzeit nur ausgefüllt werden snsapi_login<🎜><🎜><🎜>< tr><🎜><🎜>redirect_uri<🎜><🎜><🎜><🎜> ist die <🎜><🎜><🎜><🎜> Weiterleitungsadresse, die erfordert UrlEncode<🎜><🎜><🎜> <🎜><🎜>Staat<🎜><🎜><🎜><🎜> Nein an Dritte. Dieser Parameter kann verwendet werden, um CSRF-Angriffe (Cross-Site-Request-Forgery-Angriffe) zu verhindern. Es wird empfohlen, dass Dritte diesen Parameter zur Überprüfung auf eine einfache Zufallszahl plus Sitzung festlegen <🎜> <🎜>Stil<🎜><🎜><🎜><🎜>Nein<🎜><🎜><🎜><🎜> bietet die Optionen „Schwarz“ und „Weiß“ und die Standardeinstellung ist Schwarz Textbeschreibung. Weitere Informationen finden Sie in den häufig gestellten Fragen am Ende des Dokuments. Definieren Sie Stillinks. Dritte können den Standardstil entsprechend den tatsächlichen Anforderungen überschreiben. Einzelheiten finden Sie in den FAQ am Ende des Dokuments<🎜><🎜><🎜><🎜><🎜>

Parameterbeschreibung
Schritt 2: Access_token über Code abrufen

Access_token über Code abrufen

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

Parameterbeschreibung
< tbody >

参数

是否必须

说明

appid

应用唯一标识,在微信开放平台提交应用审核通过后获得

secret

应用密钥AppSecret,在微信开放平台提交应用审核通过后获得

code

填写第一步获取的code参数

grant_type

填authorization_code

Parameter

Ist es notwendig

{ &lt;br/&gt;"access_token":"ACCESS_TOKEN", &lt;br/&gt;"expires_in":7200, &lt;br/&gt;"refresh_token":"REFRESH_TOKEN",<br/>"openid":"OPENID", &lt;br/&gt;"scope":"SCOPE","unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"}Beschreibung

参数

说明

access_token

接口调用凭证

expires_in

access_token接口调用凭证超时时间,单位(秒)

refresh_token

用户刷新access_token

openid

授权用户唯一标识

scope

用户授权的作用域,使用逗号(,)分隔

unionid

只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。

appid

Ja

Die eindeutige Identifikation des Antrags wird erhalten, nachdem der Antrag zur Prüfung auf der offenen WeChat-Plattform eingereicht wurde

geheim{"errcode":40029,"errmsg":"invalidcode"}

ist

< /td>

Der Anwendungsschlüssel AppSecret wird erhalten, nachdem der Antrag zur Überprüfung auf der offenen WeChat-Plattform eingereicht wurde

Code

ist

Füllen Sie die im ersten Schritt erhaltenen Codeparameter aus

grant_type

< /td>

Ja

Geben Sie den Autorisierungscode ein

Rückgabeanweisungen

Korrekte Rückgabe:

< tbody>< td>

Beschreibung

Parameter

参数

是否必须

说明

appid

应用唯一标识

grant_type

填refresh_token

refresh_token

填写通过access_token获取到的refresh_token参数

<🎜>

access_token<🎜>

Anmeldeinformationen für Schnittstellenaufrufe<🎜>

Expires_in<🎜>

access_token Interface Call Voucher Timeout, Einheit (Sekunde)<🎜> < td>

refresh_token<🎜>

Benutzeraktualisierungs-Access_token <🎜>< /tr>

openid<🎜>

Die eindeutige Kennung des autorisierten Benutzers <🎜>

scope<🎜>< td>

Benutzerautorisierungsbereich, getrennt durch Kommas (,)<🎜>

unionid<🎜>

Dieses Feld wird erst angezeigt, nachdem der Benutzer das offizielle Konto an das WeChat Open Platform-Konto gebunden hat. <🎜><🎜>Beispiel für eine Fehlerrückgabe: <🎜><🎜><🎜><🎜><🎜>Gültigkeitsdauer des Zugriffstokens aktualisieren<🎜><🎜 >access_token ist der aufrufende Berechtigungsnachweis für den Aufruf der Autorisierungsbeziehungsschnittstelle. Wenn das access_token abläuft, können Sie zum Aktualisieren zwei access_token-Aktualisierungsergebnisse verwenden: <🎜>< 🎜>1. Wenn das access_token abgelaufen ist, wird durch die Ausführung von „refresh_token“ ein neues access_token mit einem neuen Timeout abgerufen aktualisiert werden, was dem Fortfahren des Zeitraums access_token entspricht. <🎜><🎜>Refresh_token hat eine lange Gültigkeitsdauer (30 Tage). Wenn Refresh_token abläuft, muss der Benutzer es erneut autorisieren. <🎜><🎜>Anforderungsmethode<🎜><🎜>Nachdem Sie den Code des ersten Schritts erhalten haben, fordern Sie den folgenden Link für restart_token an: <🎜><🎜>https://api.weixin.qq.com/sns/ oauth2/ REFRESH_TOKEN?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN<🎜><🎜>Parameterbeschreibung<🎜>

< tr>

<🎜>Parameter<🎜><🎜>

<🎜>Ist es erforderlich<🎜><🎜>< /td>

<🎜>Beschreibung<🎜><🎜>

appid<🎜>

is<🎜>

Eindeutige Kennung anwenden<🎜>

grant_type<🎜>

Ja<🎜>

Füllen Sie „refresh_token“ aus<🎜>

refresh_token<🎜>

is<🎜>

< p style="text-align:left;">Füllen Sie den über access_token erhaltenen Parameter „refresh_token“ aus<🎜>
Rückgabeanweisungen

Korrekte Rückgabe:

{ &lt;br/&gt;"access_token":"ACCESS_TOKEN", &lt;br/&gt;"expires_in":7200, &lt;br/&gt;"refresh_token":"REFRESH_TOKEN", &lt;br/&gt;"openid":"OPENID", &lt;br/&gt;"scope":"SCOPE" &lt;br/&gt;}

< tr >
< p style="text-align:center;">Parameter

参数

说明

access_token

接口调用凭证

expires_in

access_token接口调用凭证超时时间,单位(秒)

refresh_token

用户刷新access_token

openid

授权用户唯一标识

scope

用户授权的作用域,使用逗号(,)分隔

Beschreibung

access_token

Anmeldeinformationen für Schnittstellenaufrufe

expires_in{"errcode":40030,"errmsg":"invalidrefresh_token"}

< p style="text-align:left;">Zeitüberschreitung der Anmeldeinformationen für den Zugriff auf die access_token-Schnittstelle, Einheit (Sekunde)

refresh_token

Benutzeraktualisierung access_token

openid

Eindeutige Identifizierung autorisierter Benutzer

scope

Vom Benutzer autorisierter Bereich, verwenden Sie Kommas ( ,) getrennt

Beispiel für Fehlerrückgabe:

Hinweis:
1. Appsecret ist der von der Anwendungsschnittstelle verwendete Schlüssel, der zu risikoreichen Folgen wie dem Verlust von Anwendungsdaten und Anwendungsbenutzerdaten führen kann. Wenn er auf dem Client gespeichert wird, ist es sehr wahrscheinlich, dass er gestohlen wird (z. B. Dekompilierung, um das Appsecret zu erhalten);
2. Das access_token ist der Berechtigungsnachweis, mit dem der Benutzer Drittanbieteranwendungen zum Initiieren von Schnittstellenaufrufen autorisiert (entspricht dem Anmeldestatus des Benutzers). Der Client. Benutzerdatenlecks und Benutzer-WeChat-bezogene Probleme können nach böswilliger Beschaffung des access_token auftreten -Party-Anwendungen. Es wird nur zum Aktualisieren des access_token verwendet, aber wenn es durchgesickert ist, entspricht es dem Durchsickern des access_token, und das Risiko ist das gleiche wie oben.

Es wird empfohlen, das Geheimnis und die Benutzerdaten (z. B. access_token) auf dem App-Cloud-Server abzulegen und die Anforderung über die Cloud-Übertragungsschnittstelle aufzurufen.

Schritt 3: Rufen Sie die Schnittstelle über access_token auf

授权作用域(scope)

接口

接口说明

snsapi_base

/sns/oauth2/access_token

通过code换取access_token、refresh_token和已授权scope

/sns/oauth2/refresh_token

刷新或续期access_token使用

/sns/auth

检查access_token有效性

snsapi_userinfo

/sns/userinfo

获取用户个人信息

<🎜>Nachdem Sie das access_token erhalten haben, führen Sie den Schnittstellenaufruf mit den folgenden Voraussetzungen durch: <🎜>< 🎜> 1. Das access_token ist gültig und nicht abgelaufen. <🎜><🎜> 2. Der WeChat-Benutzer hat den entsprechenden Schnittstellenbereich (Scope) des Drittanbieter-Anwendungskontos autorisiert. <🎜><🎜>Für den Schnittstellenumfang (scope) können folgende Schnittstellen aufgerufen werden: <🎜>< td rowspan="3">

snsapi_base<🎜>

< tr>< /tr>

Autorisierungsbereich<🎜>

Schnittstelle< /strong><🎜>

Schnittstellenbeschreibung<🎜>

/ sns/oauth2/access_token <🎜>

Austauschcode für Access_token, Refresh_token und autorisierten Bereich<🎜>

< p style="text-align:left;">/sns/oauth2/refresh_token<🎜>

Aktualisieren oder fortfahren Zeitraum access_token verwendet <🎜>

/sns/auth<🎜>

Gültigkeit des access_token prüfen<🎜>

snsapi_userinfo<🎜>

/sns/userinfo<🎜>

Persönliche Benutzerinformationen abrufen< 🎜>

Unter diesen gehört snsapi_base zur Basisschnittstelle. Wenn die Anwendung bereits über andere Bereichsberechtigungen verfügt, verfügt sie standardmäßig über die Berechtigungen von snsapi_base. Durch die Verwendung von snsapi_base kann die mobile Webseitenautorisierung den Vorgang des Springens zur Autorisierungs-Anmeldeseite zum Anfordern der Benutzerautorisierung umgehen und mit dem temporären Autorisierungsticket (Code) direkt zur Drittanbieter-Webseite springen. Dadurch wird der Benutzer jedoch autorisiert Bereich (Bereich) nur snsapi_base , was dazu führt, dass Daten und Grundfunktionen, für die eine Benutzerautorisierung erforderlich ist, nicht abgerufen werden können.

FAQ
1. Was ist ein vorläufiges Autorisierungsticket (Code)?

Antwort: Ein Dritter muss den Code verwenden, um den Access_token zu erhalten. Das Timeout des Codes beträgt 10 Minuten. Ein Code kann nur einmal erfolgreich gegen den Access_token ausgetauscht werden. Der temporäre und einmalige Charakter des Codes gewährleistet die Sicherheit der autorisierten WeChat-Anmeldung. Dritte können die Sicherheit ihrer eigenen autorisierten Anmeldungen durch die Verwendung von https und Statusparametern weiter erhöhen.

2. Was ist der Berechtigungsumfang?

Antwort: Der Autorisierungsbereich (Bereich) stellt die von Benutzern autorisierten Schnittstellenberechtigungen für Dritte dar. Anwendungen von Drittanbietern müssen bei der WeChat Open Platform die Erlaubnis zur Verwendung des entsprechenden Bereichs beantragen und dann die beschriebene Methode verwenden im Dokument, um Benutzern die Autorisierung zu ermöglichen. Nach der Benutzerautorisierung kann die Schnittstelle erst nach Erhalt des entsprechenden access_token aufgerufen werden.

3. Welche Rolle spielt das Stilfeld im in die Website eingebetteten WeChat-Login-JS-Code?

Antwort: Der Farbstil der Drittanbieterseite kann hell oder dunkel sein. Wenn die Drittanbieterseite einen hellen Hintergrund hat, sollte das Stilfeld einen „Schwarz“-Wert bereitstellen (oder auch nicht). Schwarz ist der Standardwert), dann ist der entsprechende WeChat-Anmeldetextstil schwarz. Die damit verbundenen Effekte sind wie folgt:

Wenn der Wert „weiß“ angegeben wird, wird die entsprechende Textbeschreibung in Weiß angezeigt, passend für dunkle Hintergründe. Die relevanten Auswirkungen sind wie folgt:

4. Welche Rolle spielt das href-Feld im WeChat-Login-JS-Code mit dem in die Website eingebetteten QR-Code?

A: Wenn ein Dritter der Meinung ist, dass der vom WeChat-Team bereitgestellte Standardstil nicht mit seinem eigenen Seitenstil übereinstimmt, kann er eine eigene Stildatei bereitstellen, um den Standardstil zu überschreiben. Wenn ein Dritter beispielsweise der Meinung ist, dass der Standard-QR-Code zu groß ist, kann er relevante Dateien im CSS-Stil bereitstellen und die Linkadresse in das Href-Feld

.impowerBox .qrcode {width:200px;}<br/>.impowerBox .title {display: none;}<br/>.impowerBox .info {width: 200px;}<br/>.status_icon {displaynone}<br/>.impowerBox .status {text-align: center;} < eingeben 🎜>

Die damit verbundenen Auswirkungen sind wie folgt:

Persönliche Benutzerinformationen abrufen (UnionID-Mechanismus)
Schnittstellenbeschreibung
Diese Schnittstelle wird verwendet um personenbezogene Daten des Benutzers zu erhalten. Entwickler können grundlegende Benutzerinformationen über OpenID erhalten. Es ist besonders wichtig zu beachten, dass, wenn ein Entwickler über mehrere mobile Anwendungen, Website-Anwendungen und öffentliche Konten verfügt, der Benutzer durch den Erhalt der Unionid in den Basisinformationen des Benutzers eindeutig unterschieden werden kann, denn solange es sich um mobile Anwendungen handelt, die unter demselben WeChat geöffnet sind Plattformkonto, Website-Anwendungen und öffentliche Konten, die Unionid des Benutzers ist eindeutig. Mit anderen Worten: Für denselben Benutzer ist die Unionid für verschiedene Anwendungen unter derselben offenen WeChat-Plattform gleich.

Anfragebeschreibung
http-Anfragemethode: GET

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

Parameterbeschreibung
< /table >
Rückgabeanweisungen

Korrektes Json-Rückgabeergebnis:

{ &lt;br/&gt;"openid":"OPENID",<br/>"nickname":"NICKNAME",<br/>"sex":1,<br/>"province":"PROVINCE",<br/>"city":"CITY",<br/>"country":"COUNTRY",<br/>"headimgurl":"http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",<br/>"privilege":[<br/>"PRIVILEGE1", &lt;br/&gt;"PRIVILEGE2"<br/>],<br/>"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"<br/><br/>}

Parameter

Ist es notwendig

参数

是否必须

说明

access_token

调用凭证

openid

普通用户的标识,对当前开发者帐号唯一

Beschreibung<🎜>

access_token<🎜>

Ja<🎜>

Anmeldeinformationen<🎜>

openid<🎜>

Ja< 🎜 >

Die Identifikation normaler Benutzer, eindeutig für das aktuelle Entwicklerkonto<🎜>

Parameter

参数

说明

openid

普通用户的标识,对当前开发者帐号唯一

nickname

普通用户昵称

sex

普通用户性别,1为男性,2为女性

province

普通用户个人资料填写的省份

city

普通用户个人资料填写的城市

country

国家,如中国为CN

headimgurl

用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空

privilege

用户特权信息,json数组,如微信沃卡用户为(chinaunicom)

unionid

用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

< strong>Beschreibung

openid

< p style="text-align:left;">Die Identifikation normaler Benutzer, eindeutig für das aktuelle Entwicklerkonto

Spitzname{ &lt;br/&gt;"errcode":40003,"errmsg":"invalid openid"<br/>}

Normaler Benutzer-Spitzname

Geschlecht

Allgemeines Benutzergeschlecht, 1 ist männlich, 2 ist weiblich

province

接口名

频率限制

通过code换取access_token

1万/分钟

刷新access_token

5万/分钟

获取用户基本信息

5万/分钟

Normal Provinz ausgefüllt im Benutzerprofil<🎜>

Stadt<🎜>

Stadt ausgefüllt mit den persönlichen Daten normaler Benutzer<🎜>

Land< 🎜 >

Land wie China ist CN<🎜>

headimgurl<🎜>

Benutzeravatar, der letzte Wert stellt die Größe des quadratischen Avatars dar (0, 46 , 64, 96, 132 Werte sind optional, 0 stellt einen 640*640 Quadrat großen Avatar dar), dieses Element ist leer, wenn der Benutzer keinen Avatar hat <🎜>

privileg<🎜>

Informationen zu Benutzerprivilegien, JSON-Array, z. B. WeChat Woka-Benutzer ist (chinaunicom)<🎜>

unionid<🎜>

Einheitliche Benutzeridentifikation. Für Anwendungen unter einem WeChat-Konto der offenen Plattform ist die Unionid desselben Benutzers eindeutig. <🎜>

<🎜>Beispiel für eine falsche JSON-Rückgabe:<🎜><🎜><🎜><🎜><🎜>Anrufhäufigkeitslimit<🎜>< Tabelle border="0" width="0">

Schnittstellenname<🎜 >

Frequenzlimit<🎜>

Austauschcode für access_token<🎜>

10.000/Minute<🎜>

Zugriffstoken aktualisieren<🎜>

50.000/Minute <🎜>

Grundlegende Benutzerinformationen abrufen<🎜>

50.000/Minute<🎜>

代码示例:

第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;

通过code参数加上AppID和AppSecret等,通过API换取access_token;

通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

Login.php如下:

/*
Nach dem Login kopieren
返回  code state*/
Nach dem Login kopieren
$appid = &#39;wxea1xxxxxxxx20cb62&#39;;
Nach dem Login kopieren
$url = "https://open.weixin.qq.com/connect/qrconnect?appid=$appid&redirect_uri=http://zhiliaoke.com.cn/weixin.php&response_type=code&scope=snsapi_login&state=1&connect_redirect=1#wechat_redirect";
Nach dem Login kopieren

header('location:'.$url);

验证处理如下:

<?php
Nach dem Login kopieren
$code = $_GET[&#39;code&#39;];
Nach dem Login kopieren
$state = $_GET[&#39;state&#39;];//换成自己的接口信息
Nach dem Login kopieren
$appid = &#39;XXXXX&#39;;
Nach dem Login kopieren
$appsecret = &#39;XXXXX&#39;;
Nach dem Login kopieren
if (empty($code)) $this->error(&#39;授权失败&#39;);
Nach dem Login kopieren
 <br/>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
$token_url = &#39;https://api.weixin.qq.com/sns/oauth2/access_token?appid=&#39;.$appid.&#39;&secret=&#39;.$appsecret.&#39;&code=&#39;.$code.&#39;&grant_type=authorization_code&#39;;
Nach dem Login kopieren
$token = json_decode(file_get_contents($token_url));
Nach dem Login kopieren
if (isset($token->errcode)) {
Nach dem Login kopieren
    echo &#39;<h1>错误:</h1>&#39;.$token->errcode;
Nach dem Login kopieren
    echo &#39;<br/><h2>错误信息:</h2>&#39;.$token->errmsg;
Nach dem Login kopieren
    exit;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
 <br/>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
$access_token_url = &#39;https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=&#39;.$appid.&#39;&grant_type=refresh_token&refresh_token=&#39;.$token->refresh_token;//转成对象
Nach dem Login kopieren
$access_token = json_decode(file_get_contents($access_token_url));
Nach dem Login kopieren
if (isset($access_token->errcode)) {
Nach dem Login kopieren
    echo &#39;<h1>错误:</h1>&#39;.$access_token->errcode;
Nach dem Login kopieren
    echo &#39;<br/><h2>错误信息:</h2>&#39;.$access_token->errmsg;
Nach dem Login kopieren
    exit;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
 <br/>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
 <br/>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
$user_info_url = &#39;https://api.weixin.qq.com/sns/userinfo?access_token=&#39;.$access_token->access_token.&#39;&openid=&#39;.$access_token->openid.&#39;&lang=zh_CN&#39;;//转成对象
Nach dem Login kopieren
$user_info = json_decode(file_get_contents($user_info_url));
Nach dem Login kopieren
if (isset($user_info->errcode)) {
Nach dem Login kopieren
    echo &#39;<h1>错误:</h1>&#39;.$user_info->errcode;
Nach dem Login kopieren
    echo &#39;<br/><h2>错误信息:</h2>&#39;.$user_info->errmsg;
Nach dem Login kopieren
    exit;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
$rs =  json_decode(json_encode($user_info),true);//返回的json数组转换成array数组
Nach dem Login kopieren
//打印用户信息echo &#39;<pre class="brush:php;toolbar:false">&#39;;
Nach dem Login kopieren
 <br/>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
print_r($rs);echo &#39;
';
Nach dem Login kopieren
 <br/>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
?>
Nach dem Login kopieren

 

微信第三方登录(静默授权和非静默授权)

用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

微信的授权登录在日常应用中应用的非常广泛,越来越多的平台支持用户使用微信进行授权第三方登录

 使用微信授权登录有哪些优势/好处;

 1、用户量足够大,基本所有用户都会有微信,登录起来比较方便快捷;

 2、微信作为一个开放平台,为众多公众号/服务开放了许多服务接口,让公众号能够为自己的用户提供更加个性、更加优质的产品服务;

open id 和 union id ,这两个id有什么区别;

1、openid:在关注者与公众号产生消息交互后,公众号可获得关注者的openid,同一个用户,在不同公众号或移动应用下对应有不同open id标识;

2、union id:同一个用户,在不同公众号或移动应用下unionID相同;前提是,如若需要做多个公众号以及移动应用账户互通,得到唯一身份标识union id,则需要将多个公众号或移动应用在微信开放平台进行绑定,然后我们才能给拿到unionid;

所以,如果某个应用或者服务,有联合登录甚至多个公众应用多账户互通,可以采用union id来进行账户体系的用户识别与合并;即微信平台可以通过union id 来进行基于多个公众号之间的账户体系互通与识别合并;

 微信联合登录是怎么登录的,有几种登录方式;微信联合登录和微信授权登录【授权登录(非静默授权)与静默授权】

微信联合登录;也就是我们常用的微信移动端/PC端之间的扫码登录,PC端用微信扫码登录,微信移动端确认授权登录后,应用可以从微信拿到用户的open id或union id,将微信获取的用户信息与自己账户体系中的用户身份进行关联;

授权登录:需要用户确认登录,这样可以通过用户的个人确认,获取用户全面的信息,无论是否关注相关微信公众号等都可以获取。

静默授权不需要用户确认,只需要用户访问某个网页,属于嵌套在普通网页里的授权形式,但是只能获取到用户的唯一标示openid和union id,无法拿到用户的微信头像、微信名称等个人信息,对于用户的简单认证还是很有用的。

如何通过微信账户体系来做多应用、多平台之间的账户互通体系;如果某个服务同时分布在多个公众号中,账户体系如何建立;如何做到用户身份唯一识别;

1)、同一用户不同公众号/应用下open id不同,同一用户不同公众号/应用下unionid相同;

2)、建立应用账户体系时,通过union来进行多应用/平台之间的用户账户体系识别与合并;

3)、多应用/平台建立账户体系时,需要做到唯一user id对应唯一union id;

Für einen bestimmten Dienst, einschließlich mobiler App , PC-Webseite und öffentlichem Kontodienst, wie ist der Datenflussprozess für Benutzer, die sich mit WeChat-Autorisierung anmelden

1. Der Benutzer autorisiert den mobilen App-Dienst über die Schnittstelle. Wenn die ID zu diesem Zeitpunkt nicht in der Datenbank gefunden wird, wird sie als neu identifiziert Benutzer und eine Benutzer-ID werden direkt erstellt. Die eindeutige Benutzer-ID entspricht der Gewerkschafts-ID.

2 Der Benutzer scannt den QR-Code auf der PC-Seite von WeChat, um die gemeinsame Anmeldung zu autorisieren, um den PC-seitigen Dienst zu erhalten ; Der Anwendungsdienst kann die Gewerkschafts-ID über die Schnittstelle abrufen. Wenn diese ID in der Datenbank gefunden wird, wird das PC-Anmeldekonto mit dem zuvor erstellten eindeutigen Benutzer-ID-Konto zusammengeführt Der Benutzer kann sich beim öffentlichen Kontodienst anmelden, indem er dem öffentlichen Konto des Dienstes folgt und ihn mit WeChat autorisiert. Der Anwendungsserver kann die Gewerkschafts-ID des Benutzers zu diesem Zeitpunkt über die Schnittstelle abrufen , das vom offiziellen Konto angemeldete Konto wird mit dem zuvor erstellten eindeutigen Benutzer-ID-Konto zusammengeführt

Erklärung des Unterschieds zwischen den beiden Bereichen der Webseitenautorisierung

: 1. Die mit snsapi_base initiierte Autorisierung der Anmeldewebseite wird zum Abrufen der Einstiegsseite verwendet. Die OpenID des Benutzers wird stillschweigend autorisiert und springt automatisch zur Rückrufseite. Was der Benutzer wahrnimmt, ist, dass er direkt die Rückrufseite aufruft (oft eine Geschäftsseite).

2. Stille Autorisierung, die mit snsapi_userinfo initiiert wird, um sie abzurufen die grundlegenden Informationen des Benutzers. Diese Art der Autorisierung erfordert jedoch die manuelle Zustimmung des Benutzers. Da der Benutzer zugestimmt hat, können die grundlegenden Informationen des Benutzers nach der Autorisierung ohne Aufmerksamkeit abgerufen werden.

Stille Autorisierung in besonderen Szenarien:

Für Benutzer, die dem offiziellen Konto gefolgt sind, wenn der Benutzer über die Sitzung oder benutzerdefinierte Sitzung des offiziellen Kontos zutritt Menü Die Webautorisierungsseite dieses offiziellen Kontos wird stillschweigend autorisiert und der Benutzer ist sich dessen nicht bewusst, auch wenn der Bereich snsapi_userinfo ist.

Webseiten-Autorisierungsprozess:

1

, leiten Sie den Benutzer zur Eingabe der Autorisierung Seite, um der Autorisierung zuzustimmen, Code abrufen Stellen Sie sicher, dass das öffentliche WeChat-Konto über den Autorisierungsbereich (Bereichsparameter) verfügt, und führen Sie den Benutzer zur Autorisierungsseite

Referenzlink:

Bereich ist snsapi_base

Hinweis: Appid, Redirect_uri, Status müssen mit dem Backend ausgehandelt werden

https://open.weixin .qq.com/connect/oauth2 /authorize?appid="+wx_appid+"&redirect_uri="+api.wx_reg+"&response_type=code&scope=

snsapi_login,snsapi_userinfo

&state=1,0#wechat_redirect

scope ist snsapi_userinfo

https://open.weixin.qq.com/connect/oauth2/authorize?appid="+wx_appid+"&redirect_uri="+api.wx_reg+"&response_type=code&scope=snsapi_base,snsapi_userinfo&state= 1,0#wechat_redirect


Nachdem der Benutzer der Autorisierung zugestimmt hat

Wenn der Benutzer der Autorisierung zustimmt, Die Seite springt zu „redirect_uri/?code=CODE&state=STATE“.

2

, Austauschcode für Webseitenautorisierung access_token (Backend-Vorgang) Redirect_uri auf der URL, die die Seite enthält springt zurück zu /?code=CODE&state=STATE. Code

Was durch Code ausgetauscht wird, ist das Webseiten-Autorisierungs-Access_token. Wenn der Umfang der Webseiten-Autorisierung snsapi_base ist, wird in diesem Schritt beim Abrufen des Webseiten-Autorisierungs-Access_tokens auch die OpenID und die Webseite im snsapi_base-Stil abgerufen Der Autorisierungsprozess ist soweit abgeschlossen.

3: Persönliche Daten sind erforderlich. Der Hintergrund erhält den Wert über den Code und gibt ihn zur Operation an das Frontend zurück

Verwandte Empfehlungen:

PHP implementiert WeChat-Vorlagennachrichten-Push

Das obige ist der detaillierte Inhalt vonPHP implementiert die Entwicklung der Anmeldeautorisierung für WeChat-Webseiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage