Heim  >  Artikel  >  php教程  >  Code des WeChat-Webseitenautorisierungsportals

Code des WeChat-Webseitenautorisierungsportals

WBOY
WBOYOriginal
2016-09-21 13:56:151351Durchsuche

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>

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