微信网页受权获取用户基本信息--PHP

如今就说说怎么经过网页受权获取用户基本信息(国家,省,市,昵称)等。php

 

必要条件:html

1)公众号认证json

2)有网页受权获取用户基本信息的权限接口api

 

注意:最近有朋友说:在公众平台申请的测试号,会出现没法取到用户信息。换到认证的公众帐号就正常了!微信

      若是您也遇到这个问题,能够试试在认证的公众帐号里测试一下! 感谢你们的支持!app

 

填写受权回调页面的域名curl

登陆公众平台-->开发者中心-->接口权限表测试

找到 网页受权获取用户基本信息  而后修改-->填写你的域名.以下:url

保存便可!spa

 

---------------------------------------------------

关于网页受权的两种scope的区别说明(官方)

一、以snsapi_base为scope发起的网页受权,是用来获取进入页面的用户的openid的,而且是静默受权并自动跳转到回调页的。用户感知的就是直接进入了回调页(每每是业务页面)

二、以snsapi_userinfo为scope发起的网页受权,是用来获取用户的基本信息的。但这种受权须要用户手动赞成,而且因为用户赞成过,因此无须关注,就可在受权后获取该用户的基本信息。

三、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其余微信接口,都是须要该用户(即openid)关注了公众号后,才能调用成功的。

 

由于scope有两中模式,因此下面分开解说:

 

scopesnsapi_base 那么用户必须是关注了公众号才能取得信息

 

先本身创建两个文件: index.php  和  getUserInfo.php

 

代码实例

index.php以下:

1
2
3
4
5
//scope=snsapi_base 实例
$appid = '你的AppId' ;
$redirect_uri  = urlencode (  'http://你的域名/getUserInfo.php'  );
$url  = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_base&state=1#wechat_redirect" ;
header( "Location:" . $url );

getUserInfo.php以下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$appid  "你的AppId" ;  
$secret  "你的AppSecret" ;  
$code  $_GET [ "code" ];
 
//第一步:取全局access_token
$url  "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret" ;
$token  = getJson( $url );
 
//第二步:取得openid
$oauth2Url  "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code" ;
$oauth2  = getJson( $oauth2Url );
  
//第三步:根据全局access_token和openid查询用户信息  
$access_token  $token [ "access_token" ];  
$openid  $oauth2 [ 'openid' ];  
$get_user_info_url  "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN" ;
$userinfo  = getJson( $get_user_info_url );
 
//打印用户信息
   print_r( $userinfo );
 
function  getJson( $url ){
     $ch  = curl_init();
     curl_setopt( $ch , CURLOPT_URL,  $url );
     curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, FALSE); 
     curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
     $output  = curl_exec( $ch );
     curl_close( $ch );
     return  json_decode( $output , true);
}

 

 

scopesnsapi_userinfo 用户不用关注公众号,也能取到信息,可是会有一个界面让用户去点击确认!至关于一个登陆受权吧!

代码实例

index.php以下:

1
2
3
4
5
//scope=snsapi_userinfo实例
$appid = '你的AppId' ;
$redirect_uri  = urlencode (  'http://你的域名/getUserInfo.php'  );
$url  = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect" ;
header( "Location:" . $url );

getUserInfo.php以下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$appid  "你的AppId" ;  
$secret  "你的AppSecret" ;  
$code  $_GET [ "code" ];
 
//第一步:取得openid
$oauth2Url  "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code" ;
$oauth2  = getJson( $oauth2Url );
  
//第二步:根据全局access_token和openid查询用户信息  
$access_token  $oauth2 [ "access_token" ];  
$openid  $oauth2 [ 'openid' ];  
$get_user_info_url  "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN" ;
$userinfo  = getJson( $get_user_info_url );
 
//打印用户信息
   print_r( $userinfo );
 
function  getJson( $url ){
     $ch  = curl_init();
     curl_setopt( $ch , CURLOPT_URL,  $url );
     curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, FALSE); 
     curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
     $output  = curl_exec( $ch );
     curl_close( $ch );
     return  json_decode( $output , true);
}

 

 

测试步骤:

建立index.php和getUserInfo.php两个文件后 

先测试:scopesnsapi_base

1)先关注公众帐号

2)将网址: http://你的域名/index.php 生成一个二维码! 

3)用微信扫一扫

 

再测试:scopesnsapi_userinfo

1)替换代码

2)取消关注当前公众号.

3)而后用微信扫一扫,刚刚你生成的二维码.

 

最后就结束了.....

 

相关文章
相关标签/搜索