WeChat Web ページ認証ポータル コード

WBOY
リリース: 2016-09-21 13:56:15
オリジナル
1380 人が閲覧しました

パブリックアカウントのないウェブサイトにウェブページ認証ログインを実装することは非常に良いことです
<?php<br /> // +---------------------------------------------- --- ----------------------------------<br /> // | OneThink [ 考えればできる ]<br /> // +---------------------------------------------- --- ----------------------------------<br /> // | 著作権 (c) 2013 http://www.onethink.cn 無断複写・転載を禁じます<br /> // +---------------------------------------------- --- ----------------------------------<br /> // | 著者: アートネットワーク <br /> // +---------------------------------------------- --- ----------------------------------<br /> 名前空間 HomeController;<br /> ThinkController を使用します;<br /> /**<br /> * パブリックアカウント管理<br /> ​*/ <br /> class WebauthController extends Controller { <br /> /*id 公開アカウント ID<br /> *URLジャンプアドレス<br /> *スコープ認証方式 false サイレント認証<br /> */<br /> パブリック関数index(){<br /> // $map ['id'] = '114';//I ( 'id', 0, 'intval' );<br /> // $info = M ( 'member_public' )->where ( $map )->find (); $info=array(<br /> 「appid」=> , <br> 'appsecret' => );<br> <br> $redirect_url=U('Webauth/index');//コールバックアドレス<br> $code=I('get.code');<br> $scope=I('get.scope');<br> if(empty($scope)){<br> $scope=false;<br> }その他{<br> $scope=true;<br> }<br> If(空($code)){ <br> $url='http://ky.xebox.cn/index.php/Index/Index/index/';//送信アドレス<br> Yoauth($info['appid'],$redirect_url,$scope,$url);<br> }<br> $data=Yoauth_access_token($info['appid'],$info['secret'],$code); $canshu=http_build_query($data); <br> echo $URL=I('get.state').'?'.$canshu;<br> リダイレクト($URL);<br> }<br> }<br> /***********************************WeChat Web ページの認証************** * **************************/<br> <br> /* ステップ 1: ユーザーはコードを承認して取得することに同意します <br> $appid;//パブリックアカウントappid<br> $redirect_url;//承認後にリダイレクトされるコールバック リンク アドレス。リンクを処理するには urlencode を使用してください<br> $response_type; // 戻り値の型、コードを入力してください<br> $scope;//アプリケーションの認可スコープ、snsapi_base は認可ページをポップアップせず、直接ジャンプし、ユーザーの openid のみを取得できます)、snsapi_userinfo (認可ページをポップアップし、openid を通じてニックネーム、性別、場所を取得できます)また、フォローしていない場合でも、ユーザーが許可している限り、その情報も取得できます)<br> $state;// リダイレクト後に state パラメーターが含まれます。公式アカウント ID を入力して、ユーザーがどの公式アカウントから来たのかを判断できます。 */<br> function Yoauth($appid,$redirect_url,$scope=true,$state='ypwl',$response_type="code"){ <br> If($scope){<br> $scope='snsapi_userinfo';// ポップアップ Web ページの認証<br> }その他{<br> $scope='snsapi_base';//サイレント認証<br> }<br>$map ['appid'] = $appid;<br> $map ['redirect_uri'] = $redirect_url;<br> $map ['response_type'] = $response_type;<br> $map ['スコープ'] = $scope;<br> $map ['state'] = $state;<br> $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' http_build_query ( $map ) ;<br> リダイレクト($url); }<br> /* ステップ 2: Web ページの認証 access_token のコードを交換し、ユーザー情報を取得することで、次のステップを省略します<br> 注: このステップをサイレント モードで実行すると、このステップは完了し、ユーザーの openid が直接返され、snsapi_base スタイルの Web ページ認証プロセスはここで終了します。 <br> appid は公式アカウントの一意の識別子です<br> 秘密は公式アカウントのappsecretです<br> コードは、最初のステップで取得したコードパラメータを入力することです<br> Grant_type は authorization_code として入力されます <br> */<br> function 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 <br> $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> //認可方法を決定する<br> If($content['scope'] == 'snsapi_userinfo'){<br> $content=Yoauth_userinfo($content['access_token'],$content['openid']);//WeChat ユーザー情報を取得します<br> }<br> $content を返します;<br> }<br> /*<br> ステップ 3: access_token を更新する (必要な場合) <br> */<br> /* ステップ 4: ユーザー情報を取得します (スコープ snsapi_userinfo が必要です)<br> Access_token Web ページ認証インターフェイス呼び出し証明書、注意: この access_token は、基本的にサポートされている access_token とは異なります<br> Openid ユーザーの一意の識別子<br> lang 国と地域の言語バージョンに戻る、zh_CN 簡体字中国語、zh_TW 繁体字中国語、en 英語<br> */<br> function Yoauth_userinfo($access_token,$openid,$lang='zh_CN'){ <br> $map ['access_token'] = $access_token;<br> $map ['openid'] = $openid;<br> $map ['lang'] = $lang <br>; $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> $content を返します;<br> }<br> /* ユーザー openid がユーザー情報を取得します<br> access_token は呼び出し側インターフェースの認証情報です<br> Openid は、現在の公開アカウントに固有の一般ユーザーの ID です<br>lang No 国と地域の言語バージョンに戻る、zh_CN 簡体字中国語、zh_TW 繁体字中国語、en 英語 <br> */<br> function Yget_wx_userinfo($openid,$access_token,$lang='zh_CN'){<br> $map ['access_token'] = $access_token;<br> $map ['openid'] = $openid;<br> $map ['lang'] = $lang <br>; $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> $content を返します;<br> }

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート