本身查看微信网页受权wiki: https://mp.weixin.qq.com/wikiphp
第一步:用户赞成受权,获取codejson
操做方法:api
新建一个php文件,oauth2.php数组
<?php /*网页授板获取用户openid,首先获取code*/
echo $code = $_GET['code']; /*测试code是否能输出而使用echo命令*/ ?>
复制wiki中的示例代码,并将关键字替换:服务器
/*原示例代码*/ 第一步:用户赞成受权,获取code 在确保微信公众帐号拥有受权做用域(scope参数)的权限的前提下(服务号得到高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开以下页面: https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect /*替换以后的代码*/ 替换appId、redirect_uri(接口配置信息中的URL,要把php替换成 oauth2.php)、scope(等于snsapi_base) https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx**********f&redirect_uri=http://1223.applinzi.com/wx_jiaj.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
经过微信的消息管理,回复以下消息, 咱们在手机上打开,就会发现手机上显示一串字母与数字的组合,这个组合就是 code:微信
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx**********f&redirect_uri=http://1223.applinzi.com/wx_jiaj.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
第二步:经过code换取网页受权access_tokenapp
经过第二步的请求方法中的示例代码:curl
请求方法 获取code后,请求如下连接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
//一样替换掉appid / secret / code
//使用gettoken()从url中获取token,再使用json_decode()处理返回的数据
/*经过刚刚拿到的code来拿到网页受权的access_token,替换appid与secret与code='.$code.'*/
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxb0e526a903a99dbf&secret=7cdf863bc791b55714fdfe82f891a50b&code=".$code."&grant_type=authorization_code"; /*获取token的函数*/
/*gettoken($url);*/
/*经过json处理一下返回的数据,把下面的数据输出测试一下,给个变量,最后输出时把这个$openArr的数组赋值给一个属性openid*/
$openArr=json_decode(gettoken($url),true); echo $openArr['openid'];
重上新传至服务器,并从新在手机上点击刚才发的连接地址,这会拿到的一串数字与字母的组合,就是openid。函数
以snsapi_base为scope发起的网页受权,只能获取进入页面的用户的openid;
以snsapi_userinfo为scope发起的网页受权,能够获取用户的基本信息;
上面的代码只是获取openid的,要获取用记的基本信息的话,其它地方都是同样的,惟一的区别是发给手机的那个url,把scope的snsapi_base替换为snsapi_userinfo就能拿到用户的基本信息
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx*************&redirect_uri=http://1223.applinzi.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
在手机上打开上面的地址,会在微信上弹出一个确认登陆的网页:测试
点击确认登陆以后会弹出下面的页面
确认登陆就能够拿到用户的信息,若是想在手机上看到底能够拿到用户的什么信息时,把代码改一下,由原来的 echo $openArr['openid'] 输出到openid 改成 输出一个数组 print_r($openArr) ,再上传代码,刷新网页看一下效果,先把完整的拿到用户信息的代码放上来:
<?php /*网页授板获取用户openid,首先获取code*/
echo $code = $_GET['code']; /*经过刚刚拿到的code来拿到网页受权的access_token,替换appid与secret与code='.$code.'*/
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx****************&code=".$code."&grant_type=authorization_code"; /*获取token的函数*/
/*gettoken($url);*/
/*经过json处理一下返回的数据,把下面的数据输出测试一下,给个变量,最后输出时把这个$openArr的数组赋值给一个属性openid*/
$openArr=json_decode(gettoken($url),true); // echo $openArr['openid'];
/*能够使用print_r输出下这个数组*/
print_r($openArr); function gettoken($url){ /*若是用curl请求网页,多方网页使用了gzip压缩,那么获取的内容将有可能为乱码的解决办法*/
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22"); curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $output = curl_exec($ch); curl_close($ch); return $output; } ?>
传代码至服务器,再次打开手机上的连接地址:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx*************&redirect_uri=http://1223.applinzi.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
就会看到一个带openid的数组,包含用户的信息:

!!!!!由于code只能和一次且不能刷新,若是报”40029”错误的话,说明当前code无效,你须要等几分钟,再次点击连接,才能打开带openid的数组。
第四步:拉取用户信息(需scope为 snsapi_userinfo)
若是网页受权做用域为snsapi_userinfo,则此时开发者能够经过access_token和openid拉取用户信息了。从上面的图片中能够看到当前的网页的做用域为snsapi_userinfo,下一步,拉取用户的信息。
以上为微信网页受权方法,欢迎讨论。