So scannen Sie mit PHP den Code für die Anmeldung bei QQ: 1. Erhalten Sie den Anmeldebestätigungscode über die Methode „public function QRcode(){...}“. 2. Instanziieren Sie schnell die dynamisch übergebene Klassennamenzeichenfolge QQ WeChat 3. Generieren Sie einfach einen QR-Code und fragen Sie ab, um den QR-Code-Status zu ermitteln.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, Dell G3-Computer.
Wie scanne ich den QR-Code, um mich mit PHP bei QQ anzumelden?
Teilen, PHP realisiert die QQ WeChat-Code-Scanning-Anmeldung eines Drittanbieters, die das Andocken von Benutzern an Goose Factory ohne Zugriff auf das QQ-Internet und die WeChat-Entwicklerplattform realisieren kann, phpQQ WeChat-Scancode-Login
Das QQ-Paket, das ich mir geholt und integriert habe Einige gekapselt Codes im Internet sind wie folgt: QQ: von Namenszeichenfolgen
Tencent-Klasse:<?php
class QQ extends Curl_Api
{
//获取登录验证码
public function QRcode()
{
$url='https://ssl.ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=4&d=72&v=4&t=0.5409099'.time().'&daid=5';
$arr=$this->get_curl_split($url);
preg_match('/qrsig=(.*?);/',$arr['header'],$match);
if($qrsig=$match[1])
return array('code'=>200,'qrsig'=>$qrsig,'data'=>base64_encode($arr['body']));
else
return array('code'=>400,'msg'=>'二维码获取失败');
}
public function ListenQR($qrsig)
{
$qrsig = $qrsig[0];
if(empty($qrsig))return array('code'=>-1,'msg'=>'qrsig不能为空');
$url='https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&ptqrtoken='.$this->getqrtoken($qrsig).'&login_sig=&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0-'.time().'0000&js_ver=10194&js_type=1&pt_uistyle=40&aid=549000912&daid=5&';
$ret = $this->get_curl($url,0,$url,'qrsig='.$qrsig.'; ',1);
if(preg_match("/ptuiCB\('(.*?)'\)/", $ret, $arr)){
$r=explode("','",str_replace("', '","','",$arr[1]));
if($r[0]==0){
preg_match('/uin=(\d+)&/',$ret,$uin);
$uin=$uin[1];
preg_match('/skey=@(.{9});/',$ret,$skey);
preg_match('/superkey=(.*?);/',$ret,$superkey);
$data=$this->get_curl($r[2],0,0,0,1);
if($data) {
preg_match("/p_skey=(.*?);/", $data, $matchs);
$pskey = $matchs[1];
}
if($pskey){
if(isset($_GET['findpwd'])){
$_SESSION['findpwd_qq']=$uin;
}
return array('code'=>200,'uin'=>$uin,'skey'=>'@'.$skey[1],'pskey'=>$pskey,'superkey'=>$superkey[1],'nick'=>$r[5]);
}else{
return array('code'=>201,'msg'=>'登录成功,获取相关信息失败!'.$r[2]);
}
}elseif($r[0]==65){
return array('code'=>400,'msg'=>'二维码已失效。');
}elseif($r[0]==66){
return array('code'=>202,'msg'=>'二维码未失效。');
}elseif($r[0]==67){
return array('code'=>302,'msg'=>'正在验证二维码。');
}else{
return array('code'=>401,'msg'=>$r[4]);
}
}else{
return array('code'=>403,'msg'=>$ret);
}
}
private function getqrtoken($qrsig){
$len = strlen($qrsig);
$hash = 0;
for($i = 0; $i < $len; $i++){
$hash += (($hash << 5) & 2147483647) + ord($qrsig[$i]) & 2147483647;
$hash &= 2147483647;
}
return $hash & 2147483647;
}
}
1. Speichern Sie vier Klassen in Dateien
3. Schreiben Sie separat. Zwei Schnittstellen, eine generiert QR Code (base64) und der andere fragt den QR-Code-Scanstatus ab
4 Nachdem der Benutzer den Code erfolgreich gescannt hat, wird eine eindeutige ID des QQ-Kontos und von WeChat zurückgegeben
5 QR-Code zum Anmelden
QR-Code generieren und abfragen, um den QR-Code-Status login.php:
<?php class Wechat extends Curl_Api { //获取验证码 public function QRcode() { $url = "https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb&fun=new&lang=zh_CN"; $uuid = $this->get_curl($url); // var_dump($uuid); $uuid = substr($uuid,strpos($uuid,'"')+1,-2); $url = "https://login.wx.qq.com/qrcode/{$uuid}?t=webwx"; $qrcode = file_get_contents($url); $result = ['code'=>200,'uuid'=>$uuid,'qrcode'=>base64_encode($qrcode)]; return $result; } public function ListenQR($uuid) { $paras['ctime'] = 1000; $paras['rtime'] = 1000; $paras['refer'] = 'https://wx2.qq.com/'; $api = 'https://login.wx2.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=' . $uuid[0] . '&tip=0'; $body = $this->curl($api, $paras); preg_match('/(\d){3}/', $body, $code); preg_match('/redirect_uri="(.*?)"/', $body, $url); if ($code[0] == '200') { $body = $this->curl($url[1]); preg_match('/<wxuin>(\d*?)<\/wxuin>/', $body, $wxuin); $ret['code'] = 200; $ret['data']['uin'] = $wxuin[1]; $ret['data']['type'] = 'wx'; $ret['msg'] = '登录成功'; } else { $ret['code'] = 408; $ret['msg'] = '请使用手机微信扫码登录'; } return $ret; } }
ajax.php:
<?php Class Tencent{ protected $path = __DIR__ . '/'; private $cl; /* * 动态传入QQ或WX字符串,自动转换对应的api类登录 */ public function __construct($type) { //注册自动加载函数 spl_autoload_register([$this,'Psr4Autoload']); //引入curl $this->cl = new $type(); } public function Psr4Autoload($class) { $class_file = $this->path .'/'. $class . '.php'; if (file_exists($class_file)) { include "$class_file"; }else{ die('类文件'.$class_file .'不存在'); } } public function QRcode() { return call_user_func([$this->cl,__FUNCTION__]); } public function ListenQR(...$args) { return call_user_func([$this->cl,__FUNCTION__],$args); } public function __call($name, $arguments) { call_user_func_array([$this->cl,$name],(array)$arguments); } }
Dieses Beispiel gilt für WeChat, der gleiche Code kann auf QQ
Datenbankbenutzern ausgeführt werden Die Tabelle verfügt über ein weiteres qq- und wxuin-Feld, das zum Speichern von benutzergebundenem QQ und WeChat verwendet wird. Das obige ist nur ein Beispiel und möglicherweise nicht gut geschrieben. Chef, bitte beschweren Sie sich nicht
Empfehlen Sie das Lernen: „
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo scannen Sie mit PHP den QR-Code, um sich bei QQ anzumelden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!