Wie erhalte ich die Unionid des Miniprogramms?
Problemhintergrund: Ich habe das WeChat-Applet erstellt und alles war normal. Als die Testversion jedoch endlich veröffentlicht wurde, stellte ich fest, dass viele Benutzer keine Benutzer binden konnten und der Hintergrund zurückgegeben wurde: illegale Parameter. Nach mehreren Untersuchungen wurde festgestellt, dass die von der von WeChat erhaltenen Codeanforderung zurückgegebenen Daten keine UnionId enthielten, dh die von der Schnittstelle zurückgegebenen Parameter enthielten nicht den UnionId-Parameter.
1. Beschreibung des UnionID-Mechanismus
Kurz gesagt: WeChat verfügt über eine eindeutige openId für verschiedene Benutzer in verschiedenen Anwendungen. Wenn Sie jedoch feststellen möchten, ob der Benutzer derselbe Benutzer ist, müssen Sie sich darauf verlassen auf Unionid zur Unterscheidung. Normalerweise verfügt Ihr eigenes Backend über eine eigene Benutzertabelle und jeder Benutzer hat eine andere Benutzer-ID. Das heißt, die Anwendungen desselben Benutzers zum gleichen Thema auf derselben offenen WeChat-Plattform entsprechen derselben Benutzer-ID, Unionid und unterschiedlichen OpenID. Wenn sich also ein Benutzer anmeldet, können wir uns nur auf die von WeChat an uns zurückgegebene Unionid verlassen, um festzustellen, ob es sich um denselben Benutzer handelt, und sie dann unserer Benutzertabelle zuordnen, um die entsprechende Benutzer-ID zu erhalten.
Hinweis: Der folgende Satz beschreibt: Der Benutzer ist dem offiziellen Konto gefolgt oder hat sich bei der App oder dem offiziellen Konto angemeldet. Wenn der Benutzer das Miniprogramm öffnet, kann der Entwickler die UnionID des Benutzers direkt über wx abrufen. anmelden. Das heißt: Wenn der Benutzer dem offiziellen Konto nicht gefolgt ist oder sich nicht bei der App angemeldet hat, kann die UnionID des Benutzers nicht über wx.login und die UnionId nur über wx.getUserInfo abgerufen werden. Es wurde überprüft, dass es sich bei den Miniprogramm-Benutzern, deren UnionId nicht im System vorhanden ist, um alle Benutzer handelt, die dem öffentlichen Konto nicht gefolgt sind oder die WeChat-Autorisierung in der App nicht verwendet haben
Problemhintergrund
Allgemeines In diesem Fall (d. h. bevor der Benutzer sich beim Miniprogramm anmeldet, ist er dem offiziellen Konto gefolgt oder hat sich beim offiziellen Konto angemeldet oder sich mit der WeChat-Anmeldung bei der App angemeldet), die Der Benutzer kann sich über die folgenden zwei Schritte erfolgreich auf der Website anmelden: (1) wx.login Holen Sie sich den Code. (2) Fordern Sie den Hintergrund über den Code an und leiten Sie die WeChat-API im Hintergrund weiter, um Informationen wie openid und andere zu erhalten session_key. Dies kann Unionid erhalten
Eine andere Situation (das heißt, Sie sind dem offiziellen Konto nicht gefolgt, bevor Sie sich beim Miniprogramm angemeldet haben, und ich habe mich noch nie beim offiziellen Konto angemeldet App mit der WeChat-Anmeldemethode). Der über wx.login erhaltene Code kann nicht gegen Informationen wie Unionid und OpenID ausgetauscht werden.
3. Lösung:
Um die UnionId des Miniprogramms zu erhalten, sollte die UnionId von wx.getUserInfo verwendet werden. wx.getUserInfo erfordert eine Benutzerautorisierung. In Bezug auf Produkte muss der Verarbeitungsablauf für Benutzer zur Verweigerung der Autorisierung berücksichtigt werden.
Informationen zur Methode zum Entschlüsseln der Daten, nachdem wx.getUserInfo sie erhalten hat, finden Sie in der offiziellen Dokumentation.
Lösung: Erhalten Sie über wx.getUserInfo mit dem Anmeldestatus die verschlüsselten Daten „encryptedData“ und den Anfangsvektor iv des Verschlüsselungsalgorithmus des Benutzers und übergeben Sie dann die encryptdata, iv und den Code an das Backend, und das Backend empfängt sie durch Die erhaltenen verschlüsselten Daten, iv, Code und vorheriger Sitzungsschlüssel werden verwendet, um die OpenID, UnionID usw. des Benutzers zu entschlüsseln. Algorithmus zur Entschlüsselung verschlüsselter Daten
Verwandte Empfehlungen: Miniprogramm-Tutorial
Das obige ist der detaillierte Inhalt vonSo erhalten Sie die Unionid eines Miniprogramms. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!