Heim Backend-Entwicklung PHP-Tutorial Fallbericht zur Implementierung der QQ-Drittanbieter-Anmeldefunktion im TP5-Praxisprojekt

Fallbericht zur Implementierung der QQ-Drittanbieter-Anmeldefunktion im TP5-Praxisprojekt

May 28, 2018 pm 04:02 PM
功能 登录 第三方

Kürzlich habe ich das ThinkPHP 5-Framework verwendet, um ein Brautmoden-Shop-Projekt zu erstellen. Der offizielle Fall wurde von Tencent bereitgestellt. Es war sehr traurig Um festzustellen, dass der Controller beim Einfügen in tp5 die erwarteten Funktionen nicht ausführen kann. Wenn Sie die offiziellen Klassen von Tencent verwenden möchten, müssen Sie diese ändern:

1. Finden Sie den Kern im offiziellen SDK. Die Datei

ist include 'qqConnectAPI.php', wenn Sie diese öffnen Datei, Sie können sehen, dass sie mehrere andere Dateien enthält, die Comm-Datei. Die wenigen Dateien im Ordner sind nichts weiter als die Definition einiger Konstanten, die Aufzeichnung Ihres APP-SCHLÜSSELS und anderer Informationen. Es spielt einfach keine Rolle class-Ordner in tp5 und schaue mir den Code genau an. Ich habe festgestellt, dass ich die Funktion tatsächlich vollständig implementieren kann, solange ich drei Klassen bekomme.

2. Fügen Sie es in das tp-Framework ein

tp5 empfiehlt, Drittanbieter-Dinge, die nicht vom Composer installiert wurden, in das Erweiterungsverzeichnis zu legen Da wir in Zukunft möglicherweise weitere Erweiterungen vornehmen müssen, erstellen wir hier einen separaten qqlogin-Ordner für qq login.

Sie sehen, dass es nur drei Kategorien gibt Darin habe ich eine Recorder- und eine ErrorCase-Klasse erstellt. Die Funktion dieser beiden besteht darin, einige Informationen aufzuzeichnen, z. B. access_token, und ich werde sie hier direkt löschen. Beachten Sie außerdem, dass gemäß der psr4-Spezifikation der Klassenname mit dem Dateinamen übereinstimmen muss. Sie müssen daher den Dateinamen ändern und den Namespace extendqqlogin hinzufügen. Alle Klassen in tp5 müssen über Folgendes verfügen Namensraum .

Um zu verhindern, dass tp5 die von uns benötigten Dateien findet, ist es außerdem am besten, einen Root-Namespace in der Datei config.php in Zeile 30 zu registrieren:

// 注册的根命名空间
'root_namespace'  => [
 'extend\qqlogin' => '../extend/qqlogin/',
 'extend\baidu' => '../extend/bdlogin/'
],
Nach dem Login kopieren

3. Transformieren Sie den Quellcode

Da QC.php Oauth.php erbt, werden wir es von letzterem ändern, require_once entfernen und den Namespace hinzufügen Sprechen Sie nicht darüber. Schauen Sie sich zunächst die Klassenkonstanten der Tencent-Plattform an. Es gibt keine drei Attribute, die Sie auskommentieren oder löschen müssen. Das Gleiche gilt im Folgenden. Sie sollten sich vorstellen, dass Sie einen Groll gegen diese beiden Wörter hegen, und sie kommentieren oder löschen, wenn Sie sie sehen.

// protected $recorder;
public $urlUtils;
// protected $error;
public $state;
public $appid = "****";
public $callback = "http://****/index/user/qqcallback";
public $scope = "get_user_info";
Nach dem Login kopieren

Die folgenden vier Attribute müssen hinzugefügt werden, um CSRF-Angriffe zu verhindern. Sie können die offiziellen Dokumente in der Datei inc.php lesen Der Ordner „comm“ wird gespeichert und nun direkt übernommen und in Mitgliedsattribute umgewandelt.

Dann konstruieren Sie die Funktion und instanziieren Sie drei Klassen. Zwei davon existieren nicht mehr, und wie oben erwähnt, haben diese beiden Wörter einen Groll, also kommentieren oder löschen Sie sie, wenn Sie sie sehen.

Sehen Sie sich die erste Mitgliedsmethode unten anqq_login()

public function qq_login(){
 $appid = $this->recorder->readInc("appid");
 $callback = $this->recorder->readInc("callback");
 $scope = $this->recorder->readInc("scope");
 //---生成唯一随机串防CSRF攻击
 $state = md5(uniqid(rand(), TRUE));
 $this->recorder->write('state',$state);
 *
 *
 return $login_url;
 // header("Location:$login_url");
}
Nach dem Login kopieren

Wir haben die Zeilen mit diesen beiden Wörtern bereits gelöscht und wir brauchen diese Dinge erneut. Vergessen Sie nicht, dass wir hinzugefügt haben Drei Mitgliedsattribute oben haben wir bereits und verwenden sie unten. Bei der Überprüfung des Status können wir ihn über die Sitzung überprüfen: $this->appid

session('state',$this->state);
Nach dem Login kopieren
Der letzte Satz ist Header Jump Beim Sprungeffekt wird die URL direkt zurückgegeben und der Sprung dann über die TP5-Umleitungsfunktion

im Controller realisiert. $this->redirect()

Sehen Sie sich qq_callback() unten an

public function qq_callback(){
 // $state = $this->recorder->read("state");
 //---验证state防止CSRF攻击
 if(input('state') != session('state')){
  // $this->error("30001");
  exit('30001');
 }
 *
 *
 // return $params["access_token"];
 session('access_token',$params["access_token"]);
}
Nach dem Login kopieren
Die beiden Wörter, die hier angezeigt werden, wurden in qq_login geschrieben. Dasselbe gilt für input() Die Hilfsfunktion von tp5 kann die Parameter von Get- und Post-Anfragen abrufen. Das Ergebnis ist ein Array, Sie können ihm jedoch keine Schlüssel-Wert-Paare hinzufügen. Wenn Sie es einer Variablen zuweisen möchten und dann die Variable bedienen. Wenn hier ein Fehler auftritt, beenden Sie den Vorgang direkt und drucken Sie die Fehlernummer aus. Das offizielle Dokument enthält detaillierte Beschreibungen der Fehlernummern. Am Ende wird das erhaltene access_token direkt in die Sitzung geschrieben.

Die folgende

-Methode ist ähnlich. Die Parameterliste wird mithilfe der Sitzung erstellt und der Rückgabewert wird direkt in die Sitzung geschrieben. get_openid()

Ändern Sie dann QC.php, ändern Sie einfach die Konstruktionsmethode und geben Sie den drei Variablen des Arrays Werte.

$this->keysArr = array(
 "oauth_consumer_key" => (int)$this->appid,
 "access_token" => session('access_token'),
 "openid" => session('openid')
);
Nach dem Login kopieren

4. Controller-Aufruf

Die Transformation ist abgeschlossen und kann im Controller verwendet werden:

use extend\qqlogin\QC;
// 处理qq登录
public function qqlogin()
{
 $qq = new QC();
 $url = $qq->qq_login();
 $this->redirect($url);
}
// qq登录回调函数
public function qqcallback(UserModel $user)
{
 $qq = new QC();
 $qq->qq_callback();
 $qq->get_openid();
 $qq = new QC();
 $datas = $qq->get_user_info();
 * // 拿到用户信息后的处理
 *
}
Nach dem Login kopieren

Leicht zu vergessen:

QC muss zweimal in der Rückruffunktion instanziiert werden, um die Benutzerinformationen zu erhalten. Beim zweiten Mal wird es dort instanziiert sind nur zwei Parameter:

openid und access_token.

Das obige ist der detaillierte Inhalt vonFallbericht zur Implementierung der QQ-Drittanbieter-Anmeldefunktion im TP5-Praxisprojekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was soll ich tun, wenn ich das Hintergrundbild einer anderen Person herunterlade, nachdem ich mich bei WallpaperEngine bei einem anderen Konto angemeldet habe? Was soll ich tun, wenn ich das Hintergrundbild einer anderen Person herunterlade, nachdem ich mich bei WallpaperEngine bei einem anderen Konto angemeldet habe? Mar 19, 2024 pm 02:00 PM

Wenn Sie sich auf Ihrem Computer beim Steam-Konto einer anderen Person anmelden und das Konto dieser anderen Person über eine Hintergrundsoftware verfügt, lädt Steam automatisch die Hintergrundbilder herunter, die für das Konto der anderen Person abonniert wurden, nachdem Sie zu Ihrem eigenen Konto zurückgewechselt haben Deaktivieren der Steam-Cloud-Synchronisierung. Was tun, wenn WallpaperEngine die Hintergrundbilder anderer Personen herunterlädt, nachdem Sie sich bei einem anderen Konto angemeldet haben? 1. Melden Sie sich bei Ihrem eigenen Steam-Konto an, suchen Sie in den Einstellungen nach der Cloud-Synchronisierung und deaktivieren Sie die Steam-Cloud-Synchronisierung. 2. Melden Sie sich bei dem Steam-Konto einer anderen Person an, bei dem Sie sich zuvor angemeldet haben, öffnen Sie den Wallpaper Creative Workshop, suchen Sie nach den Abonnementinhalten und kündigen Sie dann alle Abonnements. (Falls Sie das Hintergrundbild in Zukunft nicht mehr finden, können Sie es zunächst abholen und dann das Abonnement kündigen.) 3. Wechseln Sie zurück zu Ihrem eigenen Steam

Wie melde ich mich bei meinem vorherigen Konto auf Xiaohongshu an? Was soll ich tun, wenn die ursprüngliche Nummer nach der erneuten Verbindung verloren geht? Wie melde ich mich bei meinem vorherigen Konto auf Xiaohongshu an? Was soll ich tun, wenn die ursprüngliche Nummer nach der erneuten Verbindung verloren geht? Mar 21, 2024 pm 09:41 PM

Mit der rasanten Entwicklung der sozialen Medien ist Xiaohongshu für viele junge Menschen zu einer beliebten Plattform geworden, auf der sie ihr Leben teilen und neue Produkte entdecken können. Während der Nutzung können Benutzer manchmal auf Schwierigkeiten stoßen, sich bei früheren Konten anzumelden. In diesem Artikel wird ausführlich erläutert, wie das Problem der Anmeldung beim alten Konto auf Xiaohongshu gelöst werden kann und wie mit der Möglichkeit umgegangen werden kann, dass das ursprüngliche Konto nach dem Ändern der Bindung verloren geht. 1. Wie melde ich mich bei Xiaohongshus vorherigem Konto an? 1. Rufen Sie das Passwort ab und melden Sie sich an. Wenn Sie sich längere Zeit nicht bei Xiaohongshu anmelden, wird Ihr Konto möglicherweise vom System recycelt. Um die Zugriffsrechte wiederherzustellen, können Sie versuchen, sich erneut bei Ihrem Konto anzumelden, indem Sie Ihr Passwort abrufen. Die Bedienungsschritte sind wie folgt: (1) Öffnen Sie die Xiaohongshu-App oder die offizielle Website und klicken Sie auf die Schaltfläche „Anmelden“. (2) Wählen Sie „Passwort abrufen“. (3) Geben Sie die Mobiltelefonnummer ein, die Sie bei der Registrierung Ihres Kontos verwendet haben

Der Unterschied zwischen vivox100s und x100: Leistungsvergleich und Funktionsanalyse Der Unterschied zwischen vivox100s und x100: Leistungsvergleich und Funktionsanalyse Mar 23, 2024 pm 10:27 PM

Sowohl die Mobiltelefone vivox100s als auch x100 sind repräsentative Modelle der Mobiltelefonproduktlinie von vivo. Sie repräsentieren jeweils das High-End-Technologieniveau von vivo in unterschiedlichen Zeiträumen. Daher weisen diese beiden Mobiltelefone gewisse Unterschiede in Design, Leistung und Funktionen auf. In diesem Artikel wird ein detaillierter Vergleich dieser beiden Mobiltelefone im Hinblick auf Leistungsvergleich und Funktionsanalyse durchgeführt, um Verbrauchern dabei zu helfen, das für sie geeignete Mobiltelefon besser auszuwählen. Schauen wir uns zunächst den Leistungsvergleich zwischen vivox100s und x100 an. vivox100s ist mit dem Neusten ausgestattet

Was genau ist Self-Media? Was sind seine Hauptmerkmale und Funktionen? Was genau ist Self-Media? Was sind seine Hauptmerkmale und Funktionen? Mar 21, 2024 pm 08:21 PM

Mit der rasanten Entwicklung des Internets ist das Konzept der Selbstmedien tief in den Herzen der Menschen verankert. Was genau ist Self-Media? Was sind seine Hauptmerkmale und Funktionen? Als nächstes werden wir diese Probleme einzeln untersuchen. 1. Was genau ist Self-Media? Wir-Medien bedeuten, wie der Name schon sagt, dass Sie die Medien sind. Dabei handelt es sich um einen Informationsträger, über den Einzelpersonen oder Teams selbstständig Inhalte erstellen, bearbeiten, veröffentlichen und über die Internetplattform verbreiten können. Anders als traditionelle Medien wie Zeitungen, Fernsehen, Radio usw. sind Selbstmedien interaktiver und personalisierter und ermöglichen es jedem, zum Produzenten und Verbreiter von Informationen zu werden. 2. Was sind die Hauptmerkmale und Funktionen von Self-Media? 1. Niedrige Hemmschwelle: Der Aufstieg der Selbstmedien hat die Hemmschwelle für den Einstieg in die Medienbranche gesenkt und es werden keine professionellen Teams mehr benötigt.

Wie melde ich mich an, wenn Xiaohongshu sich nur an das Konto erinnert? Ich weiß nur noch, wie ich mein Konto abrufen kann? Wie melde ich mich an, wenn Xiaohongshu sich nur an das Konto erinnert? Ich weiß nur noch, wie ich mein Konto abrufen kann? Mar 23, 2024 pm 05:31 PM

Xiaohongshu ist mittlerweile in das tägliche Leben vieler Menschen integriert und erfreut die Benutzer mit seinen reichhaltigen Inhalten und praktischen Bedienmethoden. Manchmal vergessen wir das Kontopasswort. Es ist wirklich ärgerlich, sich nur an das Konto zu erinnern, sich aber nicht anmelden zu können. 1. Wie melde ich mich an, wenn Xiaohongshu sich nur an das Konto erinnert? Wenn wir unser Passwort vergessen, können wir uns über den Bestätigungscode auf unserem Mobiltelefon bei Xiaohongshu anmelden. Die spezifischen Vorgänge sind wie folgt: 1. Öffnen Sie die Xiaohongshu-App oder die Webversion von Xiaohongshu. 2. Klicken Sie auf die Schaltfläche „Anmelden“ und wählen Sie „Konto und Passwort anmelden“. 4. Klicken Sie auf die Schaltfläche „Passwort vergessen“. . Geben Sie Ihre Kontonummer ein. 5. Das System sendet einen Bestätigungscode an Ihr Mobiltelefon. Geben Sie den Bestätigungscode ein und klicken Sie auf „OK“. Sie können auch ein Drittanbieterkonto verwenden (z. B

PHP-Tipps: Implementieren Sie schnell die Funktion „Zurück zur vorherigen Seite'. PHP-Tipps: Implementieren Sie schnell die Funktion „Zurück zur vorherigen Seite'. Mar 09, 2024 am 08:21 AM

PHP-Tipps: Implementieren Sie schnell die Funktion zum Zurückkehren zur vorherigen Seite. Bei der Webentwicklung müssen wir häufig die Funktion zum Zurückkehren zur vorherigen Seite implementieren. Solche Vorgänge können das Benutzererlebnis verbessern und Benutzern die Navigation zwischen Webseiten erleichtern. In PHP können wir diese Funktion durch einfachen Code erreichen. In diesem Artikel wird erläutert, wie Sie die Funktion zum Zurückkehren zur vorherigen Seite schnell implementieren können, und es werden spezifische PHP-Codebeispiele bereitgestellt. In PHP können wir $_SERVER['HTTP_REFERER'] verwenden, um die URL der vorherigen Seite abzurufen

Was soll ich tun, wenn ich mich bei Google Chrome nicht bei meinem Konto anmelden kann? Lösung dafür, warum das Google Chrome-Konto nicht angemeldet werden kann Was soll ich tun, wenn ich mich bei Google Chrome nicht bei meinem Konto anmelden kann? Lösung dafür, warum das Google Chrome-Konto nicht angemeldet werden kann Mar 13, 2024 pm 02:10 PM

Was soll ich tun, wenn ich mich bei Google Chrome nicht bei meinem Konto anmelden kann? Wenn viele Benutzer diese Software verwenden, müssen sich Benutzer bei einigen Funktionen bei ihrem Google-Konto anmelden, bevor sie sie verwenden können. Sie haben es jedoch viele Male versucht, konnten sich aber nicht erfolgreich anmelden. Viele Benutzer wissen nicht, wie das geht Lösen Sie es, also ist der Herausgeber hier, um die Lösung mit Ihnen zu teilen. Ich hoffe, dass der Inhalt des heutigen Software-Tutorials für alle hilfreich sein kann. Die Lösung ist wie folgt: 1. Klicken Sie auf einen Browser auf dem Desktop und nachdem Sie ihn geöffnet haben, sehen Sie etwa Folgendes. 2. Wenn zu diesem Zeitpunkt ein Login angezeigt wird, klicken Sie darauf. Wenn Sie es nicht sehen können, klicken Sie auf die obere rechte Ecke. 3. Klicken Sie auf „Anmelden“, geben Sie dann Ihre Kontonummer ein. Sie müssen das Konto nicht nach „@“ eingeben, und klicken Sie auf „Weiter“. 4. Geben Sie das Passwort ein. Wenn Sie diese Aufforderung sehen, klicken Sie auf Aktivieren

Wie gebe ich die Webversion von Baidu Netdisk ein? Anmeldeeingang für die Baidu Netdisk-Webversion Wie gebe ich die Webversion von Baidu Netdisk ein? Anmeldeeingang für die Baidu Netdisk-Webversion Mar 13, 2024 pm 04:58 PM

Baidu Netdisk kann nicht nur verschiedene Softwareressourcen speichern, sondern diese auch mit anderen teilen. Es unterstützt die Multi-Terminal-Synchronisierung. Wenn auf Ihrem Computer kein Client heruntergeladen wurde, können Sie die Webversion aufrufen. Wie melde ich mich also bei der Baidu Netdisk-Webversion an? Werfen wir einen Blick auf die ausführliche Einführung. Anmeldeeingang für die Webversion von Baidu Netdisk: https://pan.baidu.com (Kopieren Sie den Link zum Öffnen in den Browser) Einführung in die Software 1. Teilen Bietet eine Dateifreigabefunktion, Benutzer können Dateien organisieren und sie mit bedürftigen Freunden teilen. 2. Cloud: Es beansprucht nicht zu viel Speicher. Die meisten Dateien werden in der Cloud gespeichert, wodurch effektiv Platz auf dem Computer gespart wird. 3. Fotoalbum: Unterstützt die Cloud-Fotoalbum-Funktion, importiert Fotos auf die Cloud-Festplatte und organisiert sie dann, damit jeder sie sehen kann.​

See all articles