微信網頁授權獲取用戶基本信息--PHP


現在就說說怎么通過網頁授權獲取用戶基本信息(國家,省,市,昵稱)等。

 

必要條件:

1)公眾號認證

2)有網頁授權獲取用戶基本信息的權限接口

 

注意:最近有朋友說:在公眾平台申請的測試號,會出現無法取到用戶信息。換到認證的公眾賬號就正常了!

      如果您也遇到這個問題,可以試試在認證的公眾賬號里測試一下! 感謝大家的支持!

 

填寫授權回調頁面的域名

登錄公眾平台-->開發者中心-->接口權限表

找到 網頁授權獲取用戶基本信息  然后修改-->填寫你的域名.如下:

保存即可!

 

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

關於網頁授權的兩種scope的區別說明(官方)

1、以snsapi_base為scope發起的網頁授權,是用來獲取進入頁面的用戶的openid的,並且是靜默授權並自動跳轉到回調頁的。用戶感知的就是直接進入了回調頁(往往是業務頁面)

2、以snsapi_userinfo為scope發起的網頁授權,是用來獲取用戶的基本信息的。但這種授權需要用戶手動同意,並且由於用戶同意過,所以無須關注,就可在授權后獲取該用戶的基本信息。

3、用戶管理類接口中的“獲取用戶基本信息接口”,是在用戶和公眾號產生消息交互或關注后事件推送后,才能根據用戶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)然后用微信掃一掃,剛剛你生成的二維碼.

 

最后就結束了.....

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM