php微信企业号获取用户OpenId

来源:互联网 发布:linux current comm 编辑:程序博客网 时间:2024/05/21 00:17

用户点击授权页面,scope不需要进入确认授权页面, 直接采用采用的 scope 为 snsapi_base的时候没有影响,直接获取用户 OpenId;snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid)

但是scope为snsapi_userinfo 就会提示 用户,当用户点击确认授权之后,才能拿去用的code,再得到用户的OpenId;

snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)

我的
https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=http://xxxx/code.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

用户同意授权后,页面将跳转至http://xxx/xx.php


如果访问的时候, 提示redirect_uri 参数错误,有两种情况;

1、表示url给的域名不是回调页面的域名,必须在网页回调里面设置网页授权域名,配置了域名才能访问。网页授权获取用户基本信息 后面有个"修改"按钮   填上域名就可以了

2、回调url要进行urlencode,我就进行urlencode了,实际上不用的,已经自动转了;


以下就是微信企业号获取用户OpenId方法;但是因为我是通过 scope 为 snsapi_base授权的,所以只直接取用户OpenId,没有获取用户的性别昵称等。如果scope为snsapi_userinfo ;通过用户点击确认授权,即可拿到用户的性别、昵称、地址等信息;

//通过code换取token  $code = $_GET['code'];  $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=SECRET&code=$code&grant_type=authorization_code";  $json = file_get_contents($url);  $arr = json_decode($json,true);  $token = $arr['access_token'];  $openid = $arr['openid'];  //拿到token后就可以获取用户基本信息了  $url = "https://api.weixin.qq.com/sns/userinfo?access_token=$token&openid=$openid ";  $json = file_get_contents($url);//获取微信用户基本信息  $arr = json_decode($json,true);  $name = $arr['nickname'];//昵称  $imgURL = $arr['headimgurl'];//头像地址  $sex = $arr['sex'];//性别  $province = $arr['province'];//用户个人资料填写的省份  $city= $arr['city'];//普通用户个人资料填写的城市  $country= $arr['country'];//国家,如中国为CN  


0 0
原创粉丝点击