

Detaillierte Erläuterung des Website-Zugriffs auf QQ, WeChat und Weibo-Drittanbieter-Login
Die Gesamtidee der Drei-Parteien-Anmeldung besteht darin, die OpenID vom Dritten abzurufen, sie dann dem Benutzer zuzuordnen (in der Datenbank zu speichern) und sich anzumelden. Dieser Artikel gibt Ihnen hauptsächlich die detaillierte Erklärung der Anmeldung von Drittanbietern für den Website-Zugriff auf QQ, WeChat und Weibo. Ich hoffe, dass er allen helfen kann.
Die aktuelle Anforderung lautet: zwei (oder mehr) Domänennamen der ersten Ebene, wie zum Beispiel maxiye.cn
und yexima.com
, und mehrere Domänennamen der zweiten Ebene, die unter jedem Domänennamen verteilt sind, wie zum Beispiel: app.maxiye.cn,new.maxiye.cn,old.maxiye.cn,app.yexima.com,new.yexima.com,old.yexima.com
.. .etc., aber unter diesen Domänennamen wird derselbe Code (ja, west) verwendet und die Datenbank und die Sitzung werden gemeinsam genutzt. Gleichzeitig umfasst jeder seiner Domänennamen PC-, iOS- und Android-Terminals. Wie kann auf alle Anmeldungen von Drittanbietern zugegriffen werden?
QQ, WeChat, Weibo-Zugangspunkte:
1.Anwendungseingang: QQ ist QQ Internet, WeChat ist die offene WeChat-Plattform, Weibo ist die offene Weibo-Plattform;
2. Rückrufdomäneneinstellung: QQ kann einen Domänennamen der ersten Ebene festlegen und es können mehrere sein. Er muss mit http://
beginnen und mit ;
enden, z. B. kann WeChat nur einen festlegen Domänenname der zweiten Ebene Und es kann nur einen geben, das Format ist: http://maxiye.cn;http://yexima.com;
; Weibo kann auch einen Domänennamen der ersten Ebene festlegen und es ist einer: app.maxiye.cn
3 Unionid-Erfassung
: Mehrere Apps (maxiye.cn
) haben eine gemeinsame Datenbank, daher muss Unionid zur Bestätigung der Identität verwendet werden. QQ muss zusätzliche Berechtigungen beantragen, um UUID zu erhalten. Weitere Informationen finden Sie unter WeChat verfügt bereits über eine Unionid-Erfassungsschnittstelle. Fallstricke : 同一开发者账号下
1. QQ Viele der von der Schnittstelle zurückgegebenen Ergebnisse liegen im JSONP-Format
3 Name für die Rückrufadresse, daher müssen Sie
Einheitlicher Domänenname (Agent) als Rückrufadresse verwenden und dann intern auf den Domänennamen umleiten, an den die Anwendung gesendet wurde: callback()
Es folgt eine schriftliche Werkzeugklasse:
Die Verwendungsmethode ist wie folgt: post
Der spezifische Prozess (qq als Beispiel) ist wie folgt: 1 Der Benutzer klickt auf das QQ-Anmeldesymbol, um auf den Link
🎜>;
4. Überprüfen Sie anhand des Codeparameters den Status, rufen Sie das access_token ab, rufen Sie dann die Unionid (UID) ab und verarbeiten Sie das Ergebnis.<?php /* PHP SDK 第三方登录授权验证 * @version 1.0.0 * @author zyl * @copyright */ namespace app\helpers; use yii\helpers\Url; use Yii; class OauthLogin { public $server = '';//接入第三方的域名 public $proxy = 'app.maxiye.cn';//微信登录代理中转站点 private $type = '';//第三方类型:qq,weixin,weibo private $app_id = '';//分配给网站的appid。 private $app_secret = '';//分配给网站的appkey。 private $state = '';//client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。 private $code = '';//用户成功登录并授权,则会跳转到指定的回调地址,并在URL中带上Authorization Code。 private $access_token; private $config = [//配置多个网站的appid&appkey 'maxiye.cn' => [ 'qq' => [ 'app_id' => '100000000', 'app_secret' => 'f9038c3d07c*******7884edf3e31708', ], 'weixin' => [ 'app_id' => 'wxee7c90a7744c2002', 'app_secret' => '13e649627894*******7a85a0e2f50e7', ], 'weibo' => [ 'app_id' => '1200000000', 'app_secret' => 'e074de8*******d3818d0df9ca28c459', ], ], 'yexima.com' => [ 'qq' => [ 'app_id' => '101111244', 'app_secret' => '6ca59c6a1b1*******77e636a10ac334', ], 'weixin' => [ 'app_id' => 'wx0b822222ea9ee323', 'app_secret' => '7f9cbd*******f37ce7b4c267bdde029', ], 'weibo' => [ 'app_id' => '911111998', 'app_secret' => '5b21c452f88e2982*******1722d8fcd', ], ], ]; function __construct($params = []) { $this->type = $params['type']; $this->server = $_SERVER['SERVER_NAME']; foreach ($this->config as $k => $v) { if (stristr($this->server, $k) && isset($v[$this->type])) { $this->app_id = $v[$this->type]['app_id']; $this->app_secret = $v[$this->type]['app_secret']; } } if (isset($params['code'])) { $this->code = $params['code']; } } /** * 获取用户授权验证的链接 * @return string */ public function getOauthUrl() { $this->state = md5(uniqid(rand(), TRUE)); Yii::$app->session->setFlash('oauth_state', $this->state); $redirect_uri = urlencode(Url::to(['login-by-openid', 'type' => $this->type, true)); if ($this->type == 'weixin' && $this->server != $this->proxy) {//微信回调多域名代理处理 $redirect_uri = str_replace($this->server, $this->proxy, $redirect_uri) . '%26redirect%3D' . $this->server; } $url = ''; switch ($this->type) { case 'qq'://qq回调域填写一级域名并以“;”结束:http://maxiye.cn;http://yexima.com; $url = "https://graph.qq.com/oauth/show?which=Login&display=pc&response_type=code&client_id={$this->app_id}&state={$this->state}&display=web&redirect_uri={$redirect_uri}"; break; case 'weixin'://app.maxiye.cn不支持只填写二级域名 $url = "https://open.weixin.qq.com/connect/qrconnect?response_type=code&appid={$this->app_id}&state={$this->state}&scope=snsapi_login&redirect_uri={$redirect_uri}#wechat_redirect"; break; case 'weibo'://微博设置安全域名:maxiye.cn $url = "https://api.weibo.com/oauth2/authorize?response_type=code&client_id={$this->app_id}&state={$this->state}&display=web&redirect_uri={$redirect_uri}"; break; default: break; } return $url; } /** * 获取针对开发者账号的惟一uuid * @return string unionid或uid */ public function getUuid() { $openid = ''; if ($this->type == 'qq') { $this->getAccessToken(); } else { $openid = $this->getOpenid(); } $access_token = $this->access_token; $uuid = ''; if ($access_token) { switch ($this->type) { case 'qq': $url = "https://graph.qq.com/oauth2.0/me?access_token={$access_token}&unionid=1"; // 返回示例... /*callback({ "client_id":"YOUR_APPID", "openid":"YOUR_OPENID", "unionid":"YOUR_UNIONID" });*/ $result = $this->get_contents($url); if (strpos($result, "callback") !== false) { $lpos = strpos($result, "("); $rpos = strrpos($result, ")"); $result = json_decode(substr($result, $lpos + 1, $rpos - $lpos - 1), true); $uuid = isset($result['unionid']) ? $result['unionid'] : ''; } return $uuid; // return $openid; break; case 'weixin': $url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}"; // 返回示例 /*{ "openid":"OPENID", "nickname":"NICKNAME", "sex":1, "province":"PROVINCE", "city":"CITY", "country":"COUNTRY", "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", "privilege":[ "PRIVILEGE1", "PRIVILEGE2" ], "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" }*/ $result = json_decode($this->get_contents($url), true); return isset($result['unionid']) ? $result['unionid'] : ''; break; case 'weibo': return $openid; break; default: break; } } return $uuid; } /** * 获取access_token * @param boolean $true false表示获取原始结果,true获取真正的access_token * @return string json包|string */ public function getAccessToken($true = true) { //验证state if (Yii::$app->request->get('state', '') != Yii::$app->session->getFlash('oauth_state')) { return ''; } $redirect_uri = urlencode(Url::to(['login-by-openid', 'type' => $this->type], true)); $url = ''; switch ($this->type) { case 'qq': $url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&code={$this->code}&client_id={$this->app_id}&client_secret={$this->app_secret}&redirect_uri={$redirect_uri}"; //返回示例... //access_token=15C0CE01C0311240F9091A7DB6828E62&expires_in=7776000&refresh_token=7BFCE2E5B773D4F5531561A10E1C2B2D break; case 'weixin': $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->app_id}&secret={$this->app_secret}&code={$this->code}&grant_type=authorization_code"; //返回示例 /*{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }*/ break; case 'weibo': $url = "https://api.weibo.com/oauth2/access_token?client_id={$this->app_id}&client_secret={$this->app_secret}&grant_type=authorization_code&redirect_uri={$redirect_uri}&code={$this->code}";//新浪微博 $post_data = []; return $this->post($url, $post_data);//撒币制杖 //返回示例 /*{ "access_token": "SlAV32hkKG", "remind_in": 3600, "expires_in": 3600, "uid":"12341234" }*/ break; default: break; } if ($true) { $res_access_token = $this->get_contents($url); if ($this->type == 'qq' && strpos($res_access_token, "access_token") !== false) { $token_result = ['access_token' => explode('=', explode('&', $res_access_token)[0])[1]]; } else { $token_result = json_decode($res_access_token ?: '{}', true); } $access_token = !empty($token_result['access_token']) ? $token_result['access_token'] : ''; $this->access_token = $access_token; return $access_token; } else { return $this->get_contents($url); } } /** * post * post方式请求资源 * @param string $url 基于的baseUrl * @param array $keysArr 请求的参数列表 * @param int $flag 标志位 * @return string 返回的资源内容 */ public function post($url, $keysArr, $flag = 0) { $ch = curl_init(); if (!$flag) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $keysArr); curl_setopt($ch, CURLOPT_URL, $url); $ret = curl_exec($ch); curl_close($ch); return $ret; } /** * get_contents * 服务器通过get请求获得内容 * @param string $url 请求的url,拼接后的 * @return string 请求返回的内容 */ public function get_contents($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_URL, $url); $response = curl_exec($ch); curl_close($ch); //-------请求为空 if (empty($response)) { return '{}'; } return $response; } /** * 获取openid * @return string openid */ public function getOpenid() { $res_access_token = $this->getAccessToken(false); if ($this->type == 'qq' && strpos($res_access_token, "access_token") !== false) { $access_token = ['access_token' => explode('=', explode('&', $res_access_token)[0])[1]]; } else { $access_token = json_decode($res_access_token ?: '{}', true); } $openid = ''; if (isset($access_token['access_token'])) { $this->access_token = $access_token['access_token']; switch ($this->type) { case 'qq': $url = "https://graph.qq.com/oauth2.0/me?access_token={$access_token['access_token']}"; // 返回示例... // callback( {"client_id":"101406183","openid":"6C611CBE0C72F765572AE2472C9B59A4"} ); $result = $this->get_contents($url); if (strpos($result, "callback") !== false) { $lpos = strpos($result, "("); $rpos = strrpos($result, ")"); $result = json_decode(substr($result, $lpos + 1, $rpos - $lpos - 1), true); $openid = isset($result['openid']) ? $result['openid'] : ''; } break; case 'weixin': return $access_token['openid']; break; case 'weibo': return $access_token['uid']; /*$url = "https://api.weibo.com/oauth2/get_token_info?access_token={$access_token['access_token']}"; //返回示例 { "uid": 1073880650, "appkey": 1352222456, "scope": null, "create_at": 1352267591, "expire_in": 157679471 } $result = $this->get_contents($url); $openid = isset($result['uid'])?$result['uid']:'';*/ break; default: break; } } return $openid; } }
Verwandte Empfehlungen:
//第三方登录界面处理 public function actionLoginByOpenid(){ Yii::$app->response->format= Response::FORMAT_HTML; $params = Yii::$app->request->get(); $oauth = new OauthLogin($params); if(empty($params['code'])){ $url = $oauth->getOauthUrl(); return $this->redirect($url); }else{ //微信代理跳转处理 if(isset($params['redirect']) && $params['redirect'] != $oauth->server){ $proxy = $oauth->proxy; $server = $params['redirect']; return $this->redirect(str_replace($proxy, $server, Url::current(['redirect'=>null], 'http'))); } $openid = $oauth->getUuid(); if (!$openid) { //失败处理TODO } else { //成功处理TODO } } }
Drittanbieter-Login-PHP-Version zur Website hinzufügenhttp://app.maxiye.cn/site/login-by-openid?type=qq
php QQ Drittanbieter-Login-SDK-Programmcode_PHP-Tutorial http://app.maxiye.cn/site/login-by-openid?type=qq&state=4a78***&code=1CA8DF***
Sina Weibo-Drittanbieter-Login

Heiße KI -Werkzeuge

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

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

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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)

Heiße Themen



Vielen Dank an die Internetnutzer Qing Qiechensi, HH_KK, Satomi Ishihara und Wu Yanzu aus Südchina für die Übermittlung von Hinweisen! Laut Nachrichten vom 2. September gibt es aktuelle Gerüchte, dass „das iPhone 16 WeChat möglicherweise nicht unterstützt.“ Als Reaktion darauf antwortete ein Reporter von Shell Finance bei Apples offizieller Hotline, ob iOS-Systeme oder Apple-Geräte weiterhin unterstützt werden könnten Verwenden Sie WeChat und WeChat. Die Frage, ob es weiterhin im Apple App Store gelistet und heruntergeladen werden kann, erfordert eine Kommunikation und Diskussion zwischen Apple und Tencent, um die zukünftige Situation zu bestimmen. Software App Store und WeChat Problembeschreibung Der technische Berater des Software App Store wies darauf hin, dass Entwickler möglicherweise Gebühren zahlen müssen, um Software im Apple Store bereitzustellen. Ab einer bestimmten Anzahl an Downloads muss Apple für weitere Downloads entsprechende Gebühren zahlen. Apple kommuniziert aktiv mit Tencent,

Deepseek: Ein leistungsstarkes Werkzeug für KI -Bildgenerierung! Deepseek selbst ist kein Werkzeug zur Bildgenerierung, aber seine leistungsstarke Kerntechnologie unterstützt viele KI -Malwerkzeuge. Möchten Sie wissen, wie Sie Deepseek verwenden, um Bilder indirekt zu generieren? Bitte lesen Sie weiter! Generieren Sie Bilder mit Deepseek-basierten KI-Tools: In den folgenden Schritten werden die folgenden Tools verwendet. Wählen Sie den Zeichnungsmodus aus: Wählen Sie "AI -Zeichnung" oder eine ähnliche Funktion aus und wählen Sie den Bildtyp entsprechend Ihren Anforderungen wie "Anime Avatar", "Landschaft" aus, "Landschaft".

Gerüchte, dass WeChat das iPhone 16 unterstützt, wurden entlarvt. Vielen Dank an die Internetnutzer Xi Chuang Jiu Shi und HH_KK für die Übermittlung von Hinweisen! Laut Nachrichten vom 2. September gibt es heute Gerüchte, dass WeChat das iPhone 16 möglicherweise nicht unterstützt. Sobald das iPhone auf das iOS 18.2-System aktualisiert wird, kann es WeChat nicht mehr verwenden. Laut „Daily Economic News“ erfuhren mit der Angelegenheit vertraute Personen, dass es sich bei diesem Gerücht um ein Gerücht handelt. Antwort von Apple: Laut Shell Finance antwortete der technische Berater von Apple in China, dass die Frage, ob WeChat weiterhin auf iOS-Systemen oder Apple-Geräten genutzt werden könne und ob WeChat weiterhin im Apple App Store gelistet und heruntergeladen werden dürfe, geklärt werden müsse Nur durch Kommunikation und Diskussion können wir die zukünftige Situation bestimmen. Derzeit kommuniziert Apple aktiv mit Tencent, um zu bestätigen, ob Tencent dies auch weiterhin tun wird

Gate.io, eine 2013 gegründete führende Kryptowährungs -Handelsplattform, bietet chinesischen Nutzern eine vollständige offizielle chinesische Website. Die Website bietet eine breite Palette von Dienstleistungen, darunter Spot -Handel, Futures -Handel und -kredite, und bietet besondere Funktionen wie chinesische Schnittstelle, reichhaltige Ressourcen und Community -Unterstützung.

Die OKX -Handelsplattform bietet eine Vielzahl von Zinssätzen, einschließlich Transaktionsgebühren, Auszahlungsgebühren und Finanzierungsgebühren. Bei Spot -Transaktionen variieren die Transaktionsgebühren je nach Transaktionsvolumen und VIP -Ebene und übernehmen das "Market Maker -Modell", dh der Markt, für jede Transaktion eine niedrigere Handhabungsgebühr. Darüber hinaus bietet OKX eine Vielzahl von Futures -Verträgen an, darunter Währungsstandardverträge, USDT -Verträge und Lieferverträge, und die Gebührenstruktur jedes Vertrags ist ebenfalls unterschiedlich.

Gate.io (Sesam Open Door) ist die weltweit führende Kryptowährungsprüfung. Das Tutorial umfasst Schritte wie Kontoregistrierung und Anmeldung, KYC -Zertifizierung, Fiat -Währung und digitale Währungsaufladung, Handelspaarauswahl, Grenz-/Markttransaktionsbestellungen sowie Bestellungen und Transaktionsaufzeichnungen, wodurch Sie schnell auf der Gate.IO -Plattform für den Kryptowährungshandel beginnen. Egal, ob ein Anfänger oder ein Veteran, Sie können von diesem Tutorial profitieren und die Handelsfähigkeiten von Gate.io problemlos beherrschen.

Gateio Exchange-App-Kanäle für alte Versionen, die offizielle Anwendungsmärkte von Drittanbietern, Forum-Communities und andere Kanäle abdecken.

Dieser Artikel enthält einen detaillierten Leitfaden zum sicheren Download der Ouyi OKX -App in China. Aufgrund von Einschränkungen in den inländischen App -Stores wird den Benutzern empfohlen, die App über die offizielle Website von Ouyi OKX herunterzuladen oder den von der offiziellen Website bereitgestellten QR -Code zum Scannen und Herunterladen zu verwenden. Überprüfen Sie während des Download-Prozesses unbedingt die offizielle Website-Adresse, überprüfen Sie die Anwendungsberechtigungen, führen Sie nach der Installation einen Sicherheitsscan durch und aktivieren Sie die Zwei-Faktor-Überprüfung. Bleiben Sie während der Nutzung an lokale Gesetze und Vorschriften ein, verwenden Sie ein sicheres Netzwerkumfeld, schützen Sie die Sicherheit der Kontos, wachsam gegen Betrug und investieren rational. Dieser Artikel ist nur als Referenz und stellt keine Anlageberatung dar.