微信网页授权(OAuth2.0) PHP 源码简单实现
提要:
1.建议对OAuth2.0协议做一个学习。
2.微信官方文档和微信官网工具要得到充分利用。
比较简单,直接帖源代码了。其中“xxxxxxxxxx”部分,是需要依据自己环境做替换的
/** *OAuth2.0微信授权登录实现 * *@authorzzy *@文件名:GetWxUserInfo.php */ //回调地址 $url=urlencode("http://www.xxxxxxxxx.com/GetWxUserInfo.php"); //公众号的id和secret $appid='xxxxxxxxx'; $appsecret='xxxxxxxxx'; session_start(); //获取code码,用于和微信服务器申请token。注:依据OAuth2.0要求,此处授权登录需要用户端操作 if(!isset($_GET['code'])&&!isset($_SESSION['code'])){ echo '<ahref="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6c11a252ff1d00c4 &redirect_uri='.$url.'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect"> <fontstyle="font-size:30">授权</font></a>'; exit; } //依据code码去获取openid和access_token,自己的后台服务器直接向微信服务器申请即可 if(isset($_GET['code'])&&!isset($_SESSION['token'])){ $_SESSION['code']=$_GET['code']; $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid. "&secret=".$appsecret."&code=".$_GET['code']."&grant_type=authorization_code"; $res=https_request($url); $res=(json_decode($res,true)); $_SESSION['token']=$res; } print_r($_SESSION); //依据申请到的access_token和openid,申请Userinfo信息。 if(isset($_SESSION['token']['access_token'])){ $url="https://api.weixin.qq.com/sns/userinfo?access_token=".$_SESSION['token']['access_token']."&openid=".$_SESSION['token']['openid']."&lang=zh_CN"; echo$url; $res=https_request($url); $res=json_decode($res,true); $_SESSION['userinfo']=$res; } print_r($_SESSION); //cURL函数简单封装 functionhttps_request($url,$data=null) { $curl=curl_init(); curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE); if(!empty($data)){ curl_setopt($curl,CURLOPT_POST,1); curl_setopt($curl,CURLOPT_POSTFIELDS,$data); } curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); $output=curl_exec($curl); curl_close($curl); return$output; }
得到正确结果如下:
Array ( [code]=>041GZI4l0tvGHg10N75l05FQ4l0GZI42 [token]=>Array ( [access_token]=>TWo6w5QMpzTZibu3FPh2k4EdC5bllp4sGeQkC4NbZtj-zti-ctZj1SrrNL1qGCf2lB1-6o3N7kh2bcxl5bxtQqJEGk1cq12l8CzF40R9XvA [expires_in]=>7200 [refresh_token]=>Iz3olCrkqPBOJvSSH2bOKvA09Sjvsp1c8Ltm7MvxxPfQXSbvI_WoVmzhjqASzwlMa7TAGgsg3mIJmaHjL7jrJHDqUF1jKbhd6GNDnLtXq0U [openid]=>ota_XwQ4r_5nioVmshQ [scope]=>snsapi_userinfo ) [userinfo]=>Array ( [openid]=>ota_XwQ4r_5nioVmshQq [nickname]=>野狐 [sex]=>1 [language]=>zh_CN [city]=>杭州 [province]=>浙江 [country]=>中国 [headimgurl]=>http://wx.qlogo.cn/mmopen/PiajxSqBRaELwee7rhrt2ibnkC1MEnu04WiaWrw9FkuPBbGOgnrMbynNoEuxicgXOetW5VqQbTrS4fZDXNvAWsz6GQ/0 [privilege]=>Array ( ) ) )
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。