php利用微信接口获取微信用户信息

来源:互联网 发布:阿里云先知大会 编辑:程序博客网 时间:2024/06/11 20:15

1 .到微信公众管理平台配置接口信息







当点击提交时如未实现通过,多点几次或者检查自己的配置文件写正确没:

以下是配置文件index.php代码,自己写好后上传到上面第二张图片配置的url相对应的目录下

//获得参数 

signature nonce token timestamp echostr
$nonce     = $_GET['nonce'];
$token     = 'weixinqq';// 此处的token和第二张图片的token必须一致
$timestamp = $_GET['timestamp'];
$echostr   = $_GET['echostr'];
$signature = $_GET['signature'];
//形成数组,然后按字典序排序
$array = array();
$array = array($nonce, $timestamp, $token);
sort($array);
//拼接成字符串,sha1加密 ,然后与signature进行校验
$str = sha1( implode( $array ) );
if( $str  == $signature && $echostr ){
//第一次接入weixin api接口的时候
echo  $echostr;
exit;
}

注意的一点是:必须先把配置文件上传到服务器在配置,不然配置信息时,微信服务器检测不到该文件,将无法配置。

2.配置好后,我们就开始进行网页授权,获取用户的基本信息

第一步:到微信管理平台,找到网页授权,设置回调域名



以上内容,我们就配置好了。接下来,我们需要做的就是用户信息。

第二步:

获取用户信息必须经过一下四个步骤:

1. 获取code:

自己写一个php文件或者可以将以下每个步骤的代码全部写在一个文件中也可

创建一个test.php文件,写入如下代码

<?php 
// 配置redirect_url
$redirecturl = urlencode("http://www.baidu.com/code.php");//此时的域名www.baidu.com就是在网页授权中的域名
// appid
$appid='自己微信公众号的appid,可在微信公众号管理平台查看';
// 请求路径
$url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$redirecturl.'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';
//自动跳转到获取code界面
header("Location:$url");

创建一个code.php文件,写入如下代码

<?php
//前端传来的code值
$code = $_GET['code'];
//通过code换取网页授权access_token
$appid = "自己微信公众号的appid,可在微信公众号管理平台查看";
$appsecret = "自己微信公众号的appsecret,可在微信公众号管理平台查看";
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
$result = https_request($url);
$jsoninfo = json_decode($result, true);
// 耍新access_token
$refresh_token = $jsoninfo["refresh_token"];
$access_token_url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=$appid&grant_type=refresh_token&refresh_token=$refresh_token";
$resh_result = https_request($access_token_url);
// 获取用户信息
$accesstokenInfo = json_decode($resh_result, true);
$access_token = $accesstokenInfo["access_token"];
$openid = $accesstokenInfo["openid"];
$userinfourl = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
$userinfoResult = https_request($userinfourl);
var_dump(json_decode($userinfoResult, true));


function https_request($url,$data = null){
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  if (!empty($data)){
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  }
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $output = curl_exec($curl);
  curl_close($curl);
  return $output;
}
?>

将以上两个文件保存,上传到服务器的同一目下(因为test.php中$redirecturl配置的就是同一目录,具体视情况而定)。

将以上文件上传到服务器后,打开微信访问test.php文件,即可一步步实现用户授权,并显示用户信息。

至于实现原理,查看微信官方文档


如以上内容存在错误,请大家留言。

0 0
原创粉丝点击