


So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP
Jan 14, 2017 am 11:44 AMDieser Artikel richtet sich an Benutzer des PHP-Sprach-Laravel-Frameworks. Er stellt eine einfache integrierte WeChat-Anmeldemethode vor, die auf diesem Framework basiert. So verwenden Sie es:
1. Installieren Sie php_weixin_provider
Führen Sie Composer require Thirdproviders/Weixin unter dem Projekt aus, um die Installation abzuschlie?en. Nach erfolgreicher Installation sollten Sie die Bibliotheksdatei php_weixin_provider im Herstellerverzeichnis des Projekts sehen k?nnen:
2. Konfigurieren Sie die WeChat-Anmeldeparameter
Insgesamt sind 7 Parameter konfigurierbar, n?mlich:
client_id: entspricht der Anwendungs-App-ID, die vom offiziellen Konto erstellt wurde
client_secret: entspricht der Anwendungs-App-ID, die vom ?ffentlichen Konto erstellt wurde
Weiterleitung: Entspricht der Rückrufadresse nach erfolgreicher WeChat-Autorisierung
Proxy_URL: entspricht der von WeChat autorisierten Proxy-Dienstadresse (Sie k?nnen diesen Artikel lesen, um seine Funktion zu verstehen)
Ger?t: Der Unterschied besteht zwischen der WeChat-Anmeldung auf dem PC und der WeChat-Anmeldung auf dem Mobilger?t. Wenn es sich um ein mobiles Ger?t handelt, kann es auf leer gesetzt werden.
state_cookie_name: Der Autorisierungslink enth?lt einen zuf?lligen Statusparameter. Dieser Parameter wird intakt zurückgegeben, wenn WeChat zurückruft. Zu diesem Zeitpunkt k?nnen Sie feststellen, ob die Anforderung gültig ist, indem Sie überprüfen, ob der Statusparameter mit dem im übergebenen Parameter übereinstimmt Autorisierungslink. Verhindern Sie CSRF-Angriffe. Diese L?sung speichert den Statusparameter zun?chst w?hrend der Autorisierung im Cookie. Daher wird dieser Parameter verwendet, um den Namen des Cookies anzugeben, in dem der Statusparameter gespeichert ist. Der Standardwert ist wx_state_cookie.
state_cookie_time: Gibt die Gültigkeitsdauer von wx_state_cookie an, der Standardwert betr?gt 5 Minuten
Für diese sieben Parameter gibt es zwei Einstellmethoden.
Die erste besteht darin, diese Parameter in Gro?buchstaben in der .env-Konfigurationsdatei zu konfigurieren:
Hinweis: 1. Jedes Konfigurationselement wird gro?geschrieben und beginnt mit WEIXIN_. 2. Die ersten drei Konfigurationselemente sind nicht genau die gleichen wie die zuvor eingeführten Parameternamen. KEY entspricht client_id, und REDIRECT_URI entspricht redirect 3 Andere stimmen mit den zuvor eingeführten Parameternamen überein.
Die zweite besteht darin, diese Parameter in der Datei config/services.php zu konfigurieren:
Für eine Konfiguration auf diese Weise stimmt der Name jedes Konfigurationselements mit dem zuvor eingeführten überein.
Dinge zu beachten:
Da php_weixin_provider auf Basis von Laravel/Socialite implementiert wird, müssen client_id, client_secret und Redirect konfiguriert werden. Andernfalls tritt w?hrend des Instanziierungsprozesses von php_weixin_provider ein Fehler auf. Für client_id und client_secret ist es meiner Meinung nach kein Problem, sie in einem zu konfigurieren Ort, aber für die UmleitungWenn es einheitlich konfiguriert ist, erfüllt es m?glicherweise nicht die Anforderungen aller Szenarien, da die endgültige Rückrufadresse nicht an jedem Ort identisch ist, an dem WeChat verwendet wird. Daher wird empfohlen, die Umleitung auf eine gültige oder zu konfigurieren ungültige, nicht leere Rückrufadresse; Bei sp?terer Verwendung von php_weixin_provider k?nnen Sie den Wert dieses Parameters auch beim Aufruf ?ndern.
Wenn die Proxy-URL vorhanden ist, wird empfohlen, sie an einem ?ffentlichen Ort zu konfigurieren.
Da state_cookie_name und state_cookie_time beide Standardwerte haben, besteht grunds?tzlich keine Notwendigkeit, sie neu zu konfigurieren
Bei der Nutzung kann das Ger?t angegeben werden.
Alle Konfigurationsparameter k?nnen w?hrend der Nutzung neu angegeben werden.
3. Registrieren Sie php_weixin_provider
Suchen Sie in der Datei config/app.php des Projekts den Abschnitt ?Provider-Konfiguration“ und fügen Sie den folgenden Code zu seinem Konfigurationsarray hinzu:
4. Registrieren Sie sich für die überwachung von Anmeldeereignissen Dritter
Fügen Sie den folgenden Code zur app/Providers/EventServiceProvider.php des Projekts hinzu:
Das Laravel-Framework als Ganzes ist eine IOC- und ereignisgesteuerte Idee. Wenn Sie mit js vertraut sind, sind Sie mit ereignisgesteuerten Mustern vertraut , auch bekannt als DI: Dependency Injection). Dies ist der Schlüssel zum Verst?ndnis der Rolle der Konfiguration in den Schritten 3 und 4.
5. Schreiben Sie eine Schnittstelle für die WeChat-Anmeldung
Beispiele sind wie folgt:
//采用代理跳轉(zhuǎn),從PC端微信登錄 Route::get('/login', function () { return Socialite::with('weixin') ->setProxyUrl('http://proxy.your.com') ->setRedirectUrl(url('/login/notify')) ->redirect(); }); //采用代理跳轉(zhuǎn),從手機端微信登錄 Route::get('/login2', function () { return Socialite::with('weixin') ->setProxyUrl('http://proxy.your.com') ->setDevice('') ->setRedirectUrl(url('/login/notify')) ->redirect(); }); //不采用代理跳轉(zhuǎn),從PC端微信登錄 Route::get('/login', function () { return Socialite::with('weixin') ->setRedirectUrl(url('/login/notify')) ->redirect(); }); //不采用代理跳轉(zhuǎn),從手機端微信登錄 Route::get('/login4', function () { return Socialite::with('weixin') ->setDevice('') ->setRedirectUrl(url('/login/notify')) ->redirect(); });
Socialite::with('weixin') gibt eine Instanz von php_weixin_provider zurück, die lautet:
拿到這個實例之后,就可以采用鏈式的方式調(diào)用它提供的所有public方法,比如設置配置參數(shù),setDevice等等。
6. 編寫微信登錄回調(diào)的接口
舉例如下:
//登錄回調(diào) Route::get('/login/notify', function () { $user = null; try { $user = Socialite::with('weixin')->user(); } catch(\Exception $e) { return '獲取微信用戶異常'; } return $user->nickname; });
通過Socialite::with('weixin')拿到php_weixin_provider實例后,調(diào)用user方法,就會自動跟微信調(diào)用相關(guān)接口,并把微信的返回值封裝成對象返回。如果在此過程中,有任何錯誤都會以異常的形式拋出,比如state參數(shù)校驗失敗,比如code失效等。
返回的$user對象包含的有效屬性有:
小結(jié):
這個方案是基于laravel/socialite實現(xiàn),并發(fā)布到composer來使用的。laravel/socialite是laravel官方提供的第三方登錄的模塊,基于它可以很方便的集成大部分第三方平臺的認證,目前它官方已經(jīng)提供很多第三方的登錄實現(xiàn):https://socialiteproviders.github.io/。除了國外的facebook,google,github等,國內(nèi)的微信,微博,qq也都有提供。我在一開始也用的是它官方提供的默認的微信登錄provider來做的,但是后來我發(fā)現(xiàn)了以下幾個問題:
1. 不支持微信授權(quán)的代理;
2. pc端跟移動端竟然還是分兩個項目來做的:?
3. 它封裝的user對象里竟然不包含unionid
4. 更改配置參數(shù)的方式,實在是讓人覺得難以使用:?
所以我就在它官方的微信登錄provider基礎上,按照自己的想法,重新實現(xiàn)了一個來解決我發(fā)現(xiàn)的這些問題。
更多So integrieren Sie die WeChat-Anmeldung schnell in das Laravel-Framework von PHP相關(guān)文章請關(guān)注PHP中文網(wǎng)!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile

In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.

Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr
