Home  >  Article  >  php教程  >  WeChat web page authorization portal code

WeChat web page authorization portal code

WBOY
WBOYOriginal
2016-09-21 13:56:151316browse

It is very good to implement web page authorization login for websites without public accounts
<?php<br /> // +-------------------------------------------------- -----------------------<br /> // | OneThink [ WE CAN DO IT JUST THINK IT ]<br /> // +-------------------------------------------------- -----------------------<br /> // | Copyright (c) 2013 http://www.onethink.cn All rights reserved.<br /> // +-------------------------------------------------- -----------------------<br /> // | Author: Art Network <br /> // +-------------------------------------------------- -----------------------<br /> namespace HomeController;<br /> use ThinkController;<br /> /**<br /> * Public account management<br /> ​*/ <br /> class WebauthController extends Controller { <br /> /*id Public account ID<br /> *url jump address<br /> *scope authorization method false silent authorization<br /> */<br /> Public function index(){<br />             // $map ['id'] = '114';//I ( 'id', 0, 'intval' );<br />              // $info = M ( 'member_public' )->where ( $map )->find (); <br>          $info=array(<br> ‘appid’ => , <br>                 'appsecret' => ,             );<br> <br>          $redirect_url=U('Webauth/index');//Callback address<br>          $code=I('get.code');<br>          $scope=I('get.scope');<br>            if(empty($scope)){<br>                 $scope=false;<br>           }else{<br>                $scope=true;<br>         }<br> If(empty($code)){ <br>               $url='http://ky.xebox.cn/index.php/Index/Index/index/';//Sending address<br> Yoauth($info['appid'],$redirect_url,$scope,$url);<br>         }<br>          $data=Yoauth_access_token($info['appid'],$info['secret'],$code); <br>          $canshu=http_build_query($data); <br> echo $URL=I('get.state').'?'.$canshu;<br>           redirect($URL);<br> } <br> } <br> /***********************************WeChat webpage authorization*************** **************************/<br> <br> /* Step one: User agrees to authorize and obtain code <br> $appid;//Public account appid<br> $redirect_url;//The callback link address redirected after authorization, please use urlencode to process the link<br> $response_type; //Return type, please fill in the code<br> $scope;//Application authorization scope, snsapi_base does not pop up the authorization page, jumps directly, and can only get the user openid), snsapi_userinfo (pops up the authorization page, you can get the nickname, gender, and location through openid. And, even if you are not following In the case of , as long as the user authorizes it, his information can also be obtained)<br> $state;//The state parameter will be included after redirection. You can fill in the official account ID to determine which official account the user comes from<br> */ <br> function Yoauth($appid,$redirect_url,$scope=true,$state='ypwl',$response_type="code"){ <br> If($scope){<br>          $scope='snsapi_userinfo';//Pop-up web page authorization<br> }else{<br>          $scope='snsapi_base';//Silent authorization<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?' . http_build_query ( $map ) . '#wechat_redirect';<br> Redirect($url); <br> }<br> /* Step 2: Exchange the code for webpage authorization access_token and obtain user information to omit the following steps<br> Note: If this step is done in silent mode, it will be completed and the user's openid will be returned directly. The snsapi_base-style web page authorization process ends here. <br> The appid is the unique identifier of the official account<br> The secret is the appsecret of the official account<br> code is to fill in the code parameters obtained in the first step<br> Grant_type is filled in as 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> //Determine the authorization method<br> If($content['scope'] == 'snsapi_userinfo'){<br>          $content=Yoauth_userinfo($content['access_token'],$content['openid']);//Get WeChat user information<br> }<br> Return $content;<br> }<br> /*<br> Step 3: Refresh access_token (if needed) <br> */<br> /* Step 4: Pull user information (need to have scope snsapi_userinfo)<br> Access_token Web page authorization interface call certificate, note: this access_token is different from the basic supported access_token<br> Openid The user’s unique identifier<br> ​​lang​​Return to the country and region language version, zh_CN Simplified Chinese, zh_TW Traditional Chinese, en English<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> Return $content;<br> } <br> /* User openid gets user information<br> access_token is the calling interface credential<br> Openid is the identification of an ordinary user, unique to the current official account<br>​ lang ​ No ​ Return to the country and region language version, zh_CN Simplified Chinese, zh_TW Traditional Chinese, en English <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> Return $content;<br> }

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn