Inhaltsverzeichnis
error:
msg? :
Heim Backend-Entwicklung PHP-Tutorial QQ登录OAuth2.0 php接入种

QQ登录OAuth2.0 php接入种

Jun 13, 2016 am 10:39 AM
config function session url

QQ登录OAuth2.0 php接入类

?

/**
?*
?* qq登录
?* @author http://www.heui.org
?*
?*/
class Oauth_qq
{
??private static $_instance;
??private $config = array();
?
??private function __construct($config)
??{
????$this->Oauth_qq($config);
??}
?
??public static function getInstance($config)
??{
????if(!isset(self::$_instance))
????{
??????$c=__CLASS__;
??????self::$_instance = new $c($config);
????}
????return self::$_instance;
??}
?
??private function Oauth_qq($config)
??{
????$this->config = $config;
????$_SESSION["appid"]??? = $this->config['appid'];
????$_SESSION["appkey"]?? = $this->config['appkey'];
????$_SESSION["callback"] = $this->config['callback'];
????$_SESSION["scope"] = "get_user_info,add_share,list_album,add_album,upload_pic,add_topic,add_one_blog,add_weibo";
??}
?
??function login()
??{
????$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
????$login_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id="
????. $_SESSION["appid"] . "&redirect_uri=" . urlencode($_SESSION["callback"])
????. "&state=" . $_SESSION['state']
????. "&scope=".$_SESSION["scope"];
????header("Location:$login_url");
??}
?
??function callback()
??{
????if($_REQUEST['state'] == $_SESSION['state']) //csrf
????{
??????$token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&"
??????. "client_id=" . $_SESSION["appid"]. "&redirect_uri=" . urlencode($_SESSION["callback"])
??????. "&client_secret=" . $_SESSION["appkey"]. "&code=" . $_REQUEST["code"];
?
??????$response = get_url_contents($token_url);
??????if (strpos($response, "callback") !== false)
??????{
????????$lpos = strpos($response, "(");
????????$rpos = strrpos($response, ")");
????????$response? = substr($response, $lpos + 1, $rpos - $lpos -1);
????????$msg = json_decode($response);
????????if (isset($msg->error))
????????{
??????????echo "<h3 id="error">error:</h3>" . $msg->error;
??????????echo "<h3 id="msg">msg? :</h3>" . $msg->error_description;
??????????exit;
????????}
??????}
?
??????$params = array();
??????parse_str($response, $params);
?
??????$_SESSION["access_token"] = $params["access_token"];
????}
????else
????{
??????echo("The state does not match. You may be a victim of CSRF.");
????}
??}
?
??function get_openid()
??{
????$graph_url = "https://graph.qq.com/oauth2.0/me?access_token="
????. $_SESSION['access_token'];
?
????$str? = get_url_contents($graph_url);
????if (strpos($str, "callback") !== false)
????{
??????$lpos = strpos($str, "(");
??????$rpos = strrpos($str, ")");
??????$str? = substr($str, $lpos + 1, $rpos - $lpos -1);
????}
?
????$user = json_decode($str);
????if (isset($user->error))
????{
??????echo "<h3 id="error">error:</h3>" . $user->error;
??????echo "<h3 id="msg">msg? :</h3>" . $user->error_description;
??????exit;
????}
?
????//set openid to session
????return $_SESSION["openid"] = $user->openid;
??}
?
??function get_user_info()
??{
????$get_user_info = "https://graph.qq.com/user/get_user_info?"
????. "access_token=" . $_SESSION['access_token']
????. "&oauth_consumer_key=" . $_SESSION["appid"]
????. "&openid=" . $_SESSION["openid"]
????. "&format=json";
?
????$info = get_url_contents($get_user_info);
????$arr = json_decode($info, true);
?
????return $arr;
??}
?
??public function __clone()
??{
????trigger_error('Clone is not allow' ,E_USER_ERROR);
??}
?
}
?
/* 公用函数 */
if (!function_exists("do_post"))
{
??function do_post($url, $data)
??{
????$ch = curl_init();
????curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
????curl_setopt($ch, CURLOPT_POST, TRUE);
????curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
????curl_setopt($ch, CURLOPT_URL, $url);
????$ret = curl_exec($ch);
?
????curl_close($ch);
????return $ret;
??}
}
if (!function_exists("get_url_contents"))
{
??function get_url_contents($url)
??{
????if (ini_get("allow_url_fopen") == "1")
????return file_get_contents($url);
?
????$ch = curl_init();
????curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
????curl_setopt($ch, CURLOPT_URL, $url);
????$result =? curl_exec($ch);
????curl_close($ch);
?
????return $result;
??}
}

使用实例:

$config['appid']??? = '';
$config['appkey']?? = '';
$config['callback'] = '';
$o_qq = Oauth_qq::getInstance($config);
?
//then
$o_qq->login();
//or
$o_qq->callback();
$o_qq->get_openid();
$o_qq->get_user_info();

原文:http://www.heui.org/archives/454

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ß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)

Einführung in die PHP-Funktion – get_headers(): Ruft die Antwortheaderinformationen der URL ab Einführung in die PHP-Funktion – get_headers(): Ruft die Antwortheaderinformationen der URL ab Jul 25, 2023 am 09:05 AM

Einführung in die PHP-Funktion – get_headers(): Überblick über das Abrufen der Antwort-Header-Informationen der URL: In der PHP-Entwicklung müssen wir häufig die Antwort-Header-Informationen einer Webseite oder einer Remote-Ressource abrufen. Die PHP-Funktion get_headers() kann problemlos die Antwortheaderinformationen der Ziel-URL abrufen und in Form eines Arrays zurückgeben. In diesem Artikel wird die Verwendung der Funktion get_headers() vorgestellt und einige zugehörige Codebeispiele bereitgestellt. Verwendung der Funktion get_headers(): get_header

Warum NameResolutionError(self.host, self, e) von e und wie man es löst Warum NameResolutionError(self.host, self, e) von e und wie man es löst Mar 01, 2024 pm 01:20 PM

Der Grund für den Fehler ist NameResolutionError(self.host,self,e)frome, ein Ausnahmetyp in der urllib3-Bibliothek. Der Grund für diesen Fehler ist, dass die DNS-Auflösung fehlgeschlagen ist, d. h. der Hostname oder die IP-Adresse Der Lösungsversuch konnte nicht gefunden werden. Dies kann daran liegen, dass die eingegebene URL-Adresse falsch ist oder der DNS-Server vorübergehend nicht verfügbar ist. So beheben Sie diesen Fehler Es gibt möglicherweise mehrere Möglichkeiten, diesen Fehler zu beheben: Überprüfen Sie, ob die eingegebene URL-Adresse korrekt ist und stellen Sie sicher, dass sie zugänglich ist. Stellen Sie sicher, dass der DNS-Server verfügbar ist. Sie können es mit dem Befehl „ping“ in der Befehlszeile versuchen Um zu testen, ob der DNS-Server verfügbar ist, versuchen Sie, über die IP-Adresse statt über den Hostnamen auf die Website zuzugreifen, wenn Sie sich hinter einem Proxy befinden

Was ist der Unterschied zwischen HTML und URL? Was ist der Unterschied zwischen HTML und URL? Mar 06, 2024 pm 03:06 PM

Unterschiede: 1. Unterschiedliche Definitionen, URL ist ein einheitlicher Ressourcen-Locator und HTML ist eine Hypertext-Markup-Sprache. 2. Es kann viele URLs in einer HTML-Seite geben, aber nur eine HTML-Seite kann in einer URL vorhanden sein eine Webseite, und URL bezieht sich auf die Website-Adresse.

Was bedeutet Funktion? Was bedeutet Funktion? Aug 04, 2023 am 10:33 AM

Funktion bedeutet Funktion. Es handelt sich um einen wiederverwendbaren Codeblock mit bestimmten Funktionen. Er kann Eingabeparameter akzeptieren, bestimmte Operationen ausführen und Ergebnisse zurückgeben. Code, um die Wiederverwendbarkeit und Wartbarkeit des Codes zu verbessern.

So beheben Sie Sitzungsfehler So beheben Sie Sitzungsfehler Oct 18, 2023 pm 05:19 PM

Ein Sitzungsfehler wird normalerweise durch den Ablauf der Sitzungslebensdauer oder das Herunterfahren des Servers verursacht. Die Lösungen: 1. Verlängern Sie die Lebensdauer der Sitzung. 3. Verwenden Sie Cookies. 4. Aktualisieren Sie die Sitzung.

Lösung für das domänenübergreifende Problem der PHP-Sitzung Lösung für das domänenübergreifende Problem der PHP-Sitzung Oct 12, 2023 pm 03:00 PM

Lösung des domänenübergreifenden Problems von PHPSession Bei der Entwicklung der Front-End- und Back-End-Trennung sind domänenübergreifende Anforderungen zur Norm geworden. Wenn es um domänenübergreifende Probleme geht, nutzen wir in der Regel Sitzungen und verwalten diese. Aufgrund von Richtlinieneinschränkungen für den Browserursprung können Sitzungen jedoch standardmäßig nicht über Domänen hinweg gemeinsam genutzt werden. Um dieses Problem zu lösen, müssen wir einige Techniken und Methoden verwenden, um eine domänenübergreifende gemeinsame Nutzung von Sitzungen zu erreichen. 1. Die häufigste Verwendung von Cookies zum domänenübergreifenden Teilen von Sitzungen

So implementieren Sie die SMS-Anmeldung in der Redis-Anwendung für gemeinsam genutzte Sitzungen So implementieren Sie die SMS-Anmeldung in der Redis-Anwendung für gemeinsam genutzte Sitzungen Jun 03, 2023 pm 03:11 PM

1. Implementieren der SMS-Anmeldung basierend auf der Sitzung 1.1 Ablaufdiagramm der SMS-Anmeldung 1.2 Implementieren des Sendens eines SMS-Bestätigungscodes Beschreibung der Front-End-Anfrage: Beschreibung der Anfragemethode POST-Anfragepfad/Benutzer/Code-Anfrageparameter Telefon (Telefonnummer) Rückgabewert Keine Back-End-Schnittstelle Implementierung: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1 Überprüfen Sie die Mobiltelefonnummer, wenn

Was sind die Unterschiede zwischen JavaScript- und PHP-Cookies? Was sind die Unterschiede zwischen JavaScript- und PHP-Cookies? Sep 02, 2023 pm 12:29 PM

JavaScript-Cookies Die Verwendung von JavaScript-Cookies ist die effektivste Möglichkeit, Präferenzen, Käufe, Provisionen und andere Informationen zu speichern und zu verfolgen. Informationen, die für ein besseres Besuchererlebnis oder Website-Statistiken benötigt werden. PHPCookieCookies sind Textdateien, die auf Client-Computern gespeichert und zu Nachverfolgungszwecken aufbewahrt werden. PHP unterstützt transparent HTTP-Cookies. Wie funktionieren JavaScript-Cookies? Ihr Server sendet einige Daten in Form eines Cookies an den Browser Ihres Besuchers. Browser können Cookies akzeptieren. Falls vorhanden, wird es als reiner Textdatensatz auf der Festplatte des Besuchers gespeichert. Wenn ein Besucher nun eine andere Seite der Website erreicht

See all articles