Es ist großartig, die Anmeldung zur Webseitenautorisierung für Websites ohne öffentliche Konten zu implementieren <?php<br />
//------------------------------------------------ ---------<br />
// |. OneThink [ WIR KÖNNEN ES SCHAFFEN, EINFACH DENKEN ]<br />
//------------------------------------------------ ---------<br />
// |. Copyright (c) 2013 http://www.onethink.cn Alle Rechte vorbehalten.<br />
//------------------------------------------------ ---------<br />
// |. Autor: Art Network <br />
//------------------------------------------------ --------- <br />
Namespace HomeController;<br />
Verwenden Sie ThinkController;<br />
/**<br />
* Verwaltung öffentlicher Konten<br />
*/ <br />
Klasse WebauthController erweitert Controller { <br />
/*id Öffentliche Konto-ID<br />
*URL-Sprungadresse<br />
*Bereichsautorisierungsmethode falsche stille Autorisierung <br />
*/<br />
Öffentlicher Funktionsindex(){<br />
// $map ['id'] = '114';//I ( 'id', 0, 'intval' );<br />
// $info = M ( 'member_public' )->where ( $map )->find ();
$info=array(<br>
'appid' =>
'appsecret' =>
);<br>
<br>
$redirect_url=U('Webauth/index');//Rückrufadresse<br>
$code=I('get.code');<br>
$scope=I('get.scope');<br>
if(empty($scope)){<br>
$scope=false;<br>
}sonst{<br>
$scope=true;<br>
}<br>
If(empty($code)){ <br>
$url='http://ky.xebox.cn/index.php/Index/Index/index/';//Übertragungsadresse<br>
Yoauth($info['appid'],$redirect_url,$scope,$url);<br>
}<br>
$data=Yoauth_access_token($info['appid'],$info['secret'],$code);
$canshu=http_build_query($data);
echo $URL=I('get.state').'?'.$canshu;<br>
Weiterleitung($URL);<br>
} <br>
} <br>
/*********************************WeChat-Webseitenautorisierung****************** ***************************/<br>
<br>
/* Schritt eins: Der Benutzer stimmt der Autorisierung und dem Erhalt des Codes <br> zu
$appid;//Appid des öffentlichen Kontos<br>
$redirect_url;//Die nach der Autorisierung umgeleitete Rückruflinkadresse. Bitte verwenden Sie den URL-Code, um den Link zu verarbeiten<br>
$response_type;//Rückgabetyp, bitte Code eingeben<br>
$scope;// Anwendungsautorisierungsbereich, snsapi_base öffnet die Autorisierungsseite nicht, springt direkt und kann nur die Benutzer-OpenID abrufen), snsapi_userinfo (öffnet die Autorisierungsseite, Sie können den Spitznamen, das Geschlecht und den Standort über openid abrufen . Und selbst wenn Sie nicht folgen (sofern der Benutzer dies autorisiert, können seine Informationen auch abgerufen werden) <br>
$state;//Der Statusparameter wird nach der Umleitung eingefügt. Sie können die offizielle Konto-ID eingeben, um festzustellen, von welchem offiziellen Konto der Benutzer stammt<br>
*/ <br>
Funktion Yoauth($appid,$redirect_url,$scope=true,$state='ypwl',$response_type="code"){ <br>
If($scope){<br>
$scope='snsapi_userinfo';//Popup-Webseitenautorisierung<br>
}else{<br>
$scope='snsapi_base';//Stille Autorisierung<br>
}<br>$map ['appid'] = $appid;<br>
$map ['redirect_uri'] = $redirect_url;<br>
$map ['response_type'] = $response_type;<br>
$map ['scope'] = $scope;<br>
$map ['state'] = $state;<br>
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?'
weiterleiten($url); <br>
}<br>
/* Schritt 2: Tauschen Sie den Code für die Webseitenautorisierung access_token aus und rufen Sie Benutzerinformationen ab, um die nachfolgenden Schritte auszulassen <br>
Hinweis: Wenn dieser Schritt im unbeaufsichtigten Modus ausgeführt wird, wird er abgeschlossen und die OpenID des Benutzers wird direkt zurückgegeben. Der Webseitenautorisierungsprozess im snsapi_base-Stil endet hier. <br>
Die App-ID ist die eindeutige Kennung des offiziellen Kontos<br>
Das Geheimnis ist das App-Geheimnis des offiziellen Kontos<br>
Code wird in den im ersten Schritt erhaltenen Codeparameter eingefüllt<br>
grant_type wird als Authorization_code <br> ausgefüllt
*/<br>
Funktion Yoauth_access_token($appid,$secret,$code,$grant_type='authorization_code'){ <br>
$map ['appid'] = $appid;<br>
$map ['secret'] = $secret;<br>
$map ['code'] = $code;<br>
$map ['grant_type'] = $grant_type;
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?' http_build_query ($map);<br>
$content = file_get_contents ( $url );<br>
$content = json_decode ( $content, true );<br>
If (! empty ( $content ['errmsg'] )) {<br>
Exit ( $content ['errcode'].'--'.$content['errmsg'] );<br>
}<br>
//Bestimmen Sie die Autorisierungsmethode<br>
If($content['scope'] == 'snsapi_userinfo'){<br>
$content=Yoauth_userinfo($content['access_token'],$content['openid']);//WeChat-Benutzerinformationen abrufen<br>
}<br>
Geben Sie $content;<br> zurück
}<br>
/*<br>
Schritt 3: Access_token aktualisieren (falls erforderlich) <br>
*/<br>
/* Schritt 4: Benutzerinformationen abrufen (Bereich snsapi_userinfo erforderlich) <br>
Access_token Aufrufzertifikat der Webseiten-Autorisierungsschnittstelle, Hinweis: Dieses access_token unterscheidet sich vom grundlegend unterstützten access_token <br>
openid Die eindeutige Kennung des Benutzers<br>
lang Kehren Sie zur Sprachversion des Landes und der Region zurück, zh_CN vereinfachtes Chinesisch, zh_TW traditionelles Chinesisch, en Englisch<br>
*/<br>
Funktion Yoauth_userinfo($access_token,$openid,$lang='zh_CN'){ <br>
$map ['access_token'] = $access_token;<br>
$map ['openid'] = $openid;<br>
$map ['lang'] = $lang;
$url = 'https://api.weixin.qq.com/sns/userinfo?' http_build_query ( $map );<br>
$content = file_get_contents ( $url );<br>
$content = json_decode ( $content, true );<br>
If (! empty ( $content ['errmsg'] )) {<br>
Exit ( $content ['errcode'].'--'.$content['errmsg'] );<br>
}<br>
Geben Sie $content;<br> zurück
} <br>
/* Benutzer-OpenID ruft Benutzerinformationen ab<br>
access_token ist der Berechtigungsnachweis für die aufrufende Schnittstelle<br>
Openid ist die Identifikation eines gewöhnlichen Benutzers und ist für das aktuelle öffentliche Konto eindeutig <br>Lang Nein Zurück zur Sprachversion des Landes und der Region, zh_CN Vereinfachtes Chinesisch, zh_TW Traditionelles Chinesisch, en Englisch <br>
*/<br>
Funktion Yget_wx_userinfo($openid,$access_token,$lang='zh_CN'){<br>
$map ['access_token'] = $access_token;<br>
$map ['openid'] = $openid;<br>
$map ['lang'] = $lang;
$url = 'https://api.weixin.qq.com/cgi-bin/user/info?' http_build_query ( $map );<br>
$content = file_get_contents ( $url );<br>
$content = json_decode ( $content, true );<br>
If (! empty ( $content ['errmsg'] )) {<br>
Exit ( $content ['errcode'].'--'.$content['errmsg'] );<br>
}<br>
Geben Sie $content;<br> zurück
}<br>