Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die automatische Anmelde- und Registrierungsfunktion des WeChat-Code-Scans in PHP

So implementieren Sie die automatische Anmelde- und Registrierungsfunktion des WeChat-Code-Scans in PHP

墨辰丷
墨辰丷Original
2018-06-01 10:43:091779Durchsuche

In diesem Artikel wird hauptsächlich die automatische Anmelde- und Registrierungsfunktion des WeChat-Code-Scannens in PHP vorgestellt und die PHP-WeChat-QR-Code-Erkennungsschnittstelle und die damit verbundenen Nutzungsfähigkeiten anhand von Beispielen analysiert

WeChat-Entwicklung ist mittlerweile eine grundlegende Technologie, die Programmierer beherrschen müssen. Tatsächlich weiß jeder, der WeChat-Entwicklung gemacht hat, dass die WeChat-Schnittstelle sehr leistungsfähig und sehr einfach zu implementieren ist 🎜>

php Der Schnittstellenbereich, der für die automatische Anmeldung und Registrierung durch Scannen des WeChat-Codes auf dem PC verwendet wird, ist snsapi_userinfo. Eine WeChat-Anmeldung ist die Webseiten-Autorisierungsanmeldung und die andere ist die gemeinsame WeChat-Anmeldung

Web Anmeldung zur Seitenautorisierung: http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

Gemeinsame WeChat-Anmeldung: https://open.weixin.qq.com/cgi-bin/frame ?t=home/ web_tmpl&lang=zh_CN

Fügen Sie zunächst ein Logo zum WeChat-Link hinzu, um einen QR-Code zu generieren

Der Link lautet beispielsweise https: //open.weixin.qq.com/connect /oauth2/authorize?appid='.$appid.'&redirect_uri='.$url.'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect' Wir können viel Aufhebens um den Status machen, denn welcher Status Sie an WeChat übergeben, gibt zurück, was

als Kennung für den Server und das WeChat-Segment verwendet werden kann:

public function creatqrAction(){
if($_GET['app']){
$wtoken=$_COOKIE['wtoken'];
$postdata=$_SESSION['w_state'];
if($wtoken){
$postdata=$wtoken;
}
include CONFIG_PATH . 'phpqrcode/'.'phpqrcode.php'
$sh=$this->shar1();
$value="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx138697ef383a9167&redirect_uri=http://www.xxx.net/login/wcallback&response_type=code&scope=snsapi_userinfo&state=".$postdata."&connect_redirect=1#wechat_redirect";
$errorCorrectionLevel = "L";
$matrixPointSize = "5";
QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize);
}
}

At Dieses Mal wird der QR-Code-Status als Kennung generiert und phpqrcode kann im Artikel-Download am Ende verwendet werden, sodass wir die Rückrufadresse http://www.xxx.net/login/wcallback

, und dann können wir die Daten in der wcallback-Methode verarbeiten, die vom Benutzer generierte Sitzung einfügen und zur Anmeldung springen. Sobald der Status erhalten ist, können auf der PC-Seite mehrere Einstellungen vorgenommen werden Nach der Verarbeitung im WeChat-Browser kann das Fenster geschlossen werden:

document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
WeixinJSBridge.call('closeWindow');}, false);

Sie können auch autorisieren und zu springen Die WeChat-Dienstkonto-Folgeseite nach erfolgreicher Anmeldung:

header("Location: weixin://profile/gh_a5e1959f9a4e");
wcallback方法做处理登陆
$code = $_GET['code'];
$state = $_GET['state'];
$setting = include CONFIG_PATH . 'setting.php'
$appid=$setting['weixin']['appid'];
$appsecret=$setting['weixin']['appsecret'];
if (emptyempty($code)) $this->showMessage('授权失败');
try{
$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code'
$token = json_decode($this->https_request($token_url));
}catch(Exception $e)
{
print_r($e);
}
if (isset($token->errcode)) {
echo '错误:'.$token->errcode;
echo '错误信息:'.$token->errmsg;
exit;
}
$access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.$appid.'&grant_type=refresh_token&refresh_token='.$token->refresh_token;
//转成对象
$access_token = json_decode($this->https_request($access_token_url));
if (isset($access_token->errcode)) {
echo '错误:'.$access_token->errcode;
echo '错误信息:'.$access_token->errmsg;
exit;
}
$user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token->access_token.'&openid='.$access_token->openid.'&lang=zh_CN'
//转成对象
$user_info = json_decode($this->https_request($user_info_url));
if (isset($user_info->errcode)) {
echo '错误:'.$user_info->errcode;
echo '错误信息:'.$user_info->errmsg;
exit;
}
//打印用户信息
// echo ''
// print_r($user_info);
// echo ''

Der Download der phpqrcode-Klassenbibliothek ist hier nicht verfügbar. Sie können sie auf Baidu suchen und herunterladen

Beispiel für die automatische Anmeldung für die Magento WeChat QR-Code-Scan-Website

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN


Wenn man sich den Post-Authorization-Schnittstellenaufruf (UnionID) ansieht, ist es nicht schwer festzustellen, dass das Eingeben der Rückrufadresse und die Bestätigung der Anmeldung am PC durch den Benutzer zu

UnionID-Methode abrufen

public function wcallbackAction(){
$code = $_GET['code'];
$state = $_GET['state'];
$setting = include CONFIG_PATH . 'setting.php';
$appid=$setting['weixin']['appid'];
$appsecret=$setting['weixin']['appsecret'];
if (emptyempty($code)) $this->showMessage('授权失败');
try{
$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';
$token = json_decode($this->https_request($token_url));
}catch(Exception $e)
{
print_r($e);
}
if (isset($token->errcode)) {
echo &#39;<h1>错误:</h1>&#39;.$token->errcode;
echo &#39;<br/><h2>错误信息:</h2>&#39;.$token->errmsg;
exit;
}
$access_token_url = &#39;https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=&#39;.$appid.&#39;&grant_type=refresh_token&refresh_token=&#39;.$token->refresh_token;
//转成对象
$access_token = json_decode($this->https_request($access_token_url));
if (isset($access_token->errcode)) {
echo &#39;<h1>错误:</h1>&#39;.$access_token->errcode;
echo &#39;<br/><h2>错误信息:</h2>&#39;.$access_token->errmsg;
exit;
}
$user_info_url = &#39;https://api.weixin.qq.com/sns/userinfo?access_token=&#39;.$access_token->access_token.&#39;&openid=&#39;.$access_token->openid.&#39;&lang=zh_CN&#39;;
//转成对象
$user_info = json_decode($this->https_request($user_info_url));
if (isset($user_info->errcode)) {
echo &#39;<h1>错误:</h1>&#39;.$user_info->errcode;
echo &#39;<br/><h2>错误信息:</h2>&#39;.$user_info->errmsg;
exit;
}
//打印用户信息
// echo &#39;<pre class="brush:php;toolbar:false">&#39;;
// print_r($user_info);
// echo &#39;
'; //获取unionid $uid=$user_info->unionid; } //用户操作处理 分为再次登录和第一次登陆 $sql="select h_user_id from dtb_user_binded as t1 left join dtb_user_weixin as t2 on t1.u_id=t2.id where t1.u_type='". User::$arrUtype['weixin_num_t']."' and t2.openid='$user_info->unionid'"; $h_user_id = Core_Db::getOne($sql); if(!emptyempty($h_user_id)){//该weixin号再次登录 }{//该weixin号第一次登录 }

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

Detaillierte Erläuterung der Datenverschlüsselung und -entschlüsselung, die durch die symmetrische PHP-Verschlüsselungsfunktion implementiert werden


Prinzip und Implementierung von PHP-Bilderkennungstechnologie


php

PATH_SEPARATOR ermittelt die aktuelle Instanz des Serversystemtyps

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die automatische Anmelde- und Registrierungsfunktion des WeChat-Code-Scans in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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