微信 获取 用户信息访问授权管理
define( "WX_APPID" ,$appid); //公众号的appid
define( "WX_SRC" , $screat ); 公众号seceat
define( "WX_CALLBACK_URLL" , $serverName.'/parter/weixin/callback2.php' ); //登录之后回调地址
1.微信通过 appid 和 appsereat 获取 code;
header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.WX_APPID.'&redirect_uri='.urlencode(WX_CALLBACK_URLL).'&response_type=code&scope='.WX_U.'&state=STATE#wechat_redirect');
array ( [code] => 061CVJUq0F85Pp1xXPXq02M8Vq0CVJUx [state] => STATE ) 获取到code
2.通过code 获取 token,和 openid 绑定微信开放平台会有 unid;
使用code换取access_token
换取网页授权access_token页面的构造方式:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code |
参数说明
参数 |
是否必须 |
说明 |
appid |
是 |
公众号的唯一标识 |
secret |
是 |
公众号的appsecret |
code |
是 |
填写第一步获取的code参数 |
grant_type |
是 |
填写为authorization_code |
code:在这里填写为上一步获得的值。
curl_get_https请求方法。(提示 :高版本的 直接 用 file_get_content 就可以)
function curl_get_https($url){
$curl = curl_init(); // 启动一个CURL会话
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
$tmpInfo = curl_exec($curl); //返回api的json对象
//关闭URL请求
curl_close($curl);
return $tmpInfo; //返回json对象
}
打印如下:
$get_token_url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.WX_APPID.'&secret='.WX_SRC.'&code='.$code.'&grant_type=authorization_code';
$res = curl_get_https($get_token_url); //获取文件内容或获取网络请求的内容
$json_obj = json_decode($res,true);
3.通过token 和 openid 请求获取到 用户信息和 跳转。
通过access_token、openid获取用户信息
请求方法:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
参数说明
参数 |
描述 |
access_token |
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同 |
openid |
用户的唯一标识 |
$get_user_info_url='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
$res = curl_get_https($get_user_info_url); //获取文件内容或获取网络请求的内
//解析json
$user_obj = json_decode($res,true);