思路:
1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token(与基础支持中的access_token不同) 3、如果需要,开发者可以刷新网页授权access_token,避免过期 4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)测试代码:
1.微信访问此文件;
<?php
$APPID='微信公众号的appid';
$REDIRECT_URI='<span style="font-family: Arial, Helvetica, sans-serif;">http://www.test.net/callback.php</span><span style="font-family: Arial, Helvetica, sans-serif;">';</span>
$scope='snsapi_base';
//$scope='snsapi_userinfo';//需要授权
$url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$APPID.'&redirect_uri='.urlencode($REDIRECT_URI).'&response_type=code&scope='.$scope.'&state=123#wechat_redirect';
header("Location:".$url);
?>
2.在此回调文件中获取用户信息;
<?php
//http://www.test.net/callback.php
$appid = "<span style="font-family: Arial, Helvetica, sans-serif;">微信公众号的appid</span><span style="font-family: Arial, Helvetica, sans-serif;">"; </span>
$secret = "<span style="font-family: Arial, Helvetica, sans-serif;">微信公众号的appsecret</span><span style="font-family: Arial, Helvetica, sans-serif;">"; </span>
$code = $_GET["code"];
$get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
$json=json_decode(file_get_contents("$get_token_url"));
$access_token = $json->access_token;
$openid = $json->openid;
$get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
$userInfo=json_decode(file_get_contents("$get_user_info_url"));
//$_SESSION['user'] = $user_obj;
print_r($userInfo->openid);
?>
注:
file_get_contents函数需要在php.ini文件中启用,方法如下:
<p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; border: 0px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">在php.ini中找到并修改</p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; border: 0px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">extension=php_openssl.dll</p><p style="margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; border: 0px; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">allow_url_include = On</p>