微信網頁受權獲取用戶基本信息--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)而後用微信掃一掃,剛剛你生成的二維碼.

 

最後就結束了.....

 

相關文章
相關標籤/搜索