码迷,mamicode.com
首页 > 微信 > 详细

微信公众号授权获取用户信息

时间:2018-07-21 16:55:37      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:appid   info   nts   net   OAuth2   通过   include   error   cgi   

1、token文件     同上一篇文章

 

2、配置文件       同上一篇文章

 

3、用户扫码跳转微信授权页面  code.php

include "conf.php"; 
// 微信端授权登录---生成二维码 $code_url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$re_url&response_type=code&scope=$scope&state=$state#wechat_redirect";
include ‘phpqrcode.php‘; // 官网下载地址 https://sourceforge.net/projects/phpqrcode/files/
$QR=‘qrcode.png‘; // 二维码图片名称
$errorLevel = "L"; //定义纠错级别
$size = "4"; //定义生成内容
QRcode
::png($code_url, $QR, $errorLevel, $size, 2); // 执行生成图片
echo ‘<img src="‘.$QR.‘">‘; //输出二维码

注意:二维码生成目录必须有创建写入文件权限

 

4、也可是使用用户微信端打开连接 (与 第3 步 执行方式不同)code.php

 include "conf.php";
//https://mp.weixin.qq.com/cgi-bin/settingpage?t=setting/function&action=function&token=782251143&lang=zh_CN
//网页授权域名 域名/wx,不带 http://

$code_url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$re_url&response_type=code&scope=$scope&state=$state#wechat_redirect";
header("Location:".$code_url);
exit;

 

5、通过用户点击同意授权获取用户信息

include "conf.php";  // 引入配置文件

if(isset($_GET[‘code‘]) && isset($_GET["state"]))
{
    if($state!=$_GET["state"])
    {
        exit("state_error");
    }

    $code=$_GET[‘code‘];
    $token_url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";
    $token_resturn=https_get($token_url);
    $token_data=json_decode($token_resturn,true);

    //如果请求 access_token 失败
    if(isset($token_data["errcode"]))
    {
        exit($token_data["errmsg"]);
    }

    $openid=$token_data["openid"];
    $web_access_token=$token_data["access_token"];
    $refresh_token=$token_data["refresh_token"];

    // 验证access_token 是否有效
    $refresh_url="https://api.weixin.qq.com/sns/auth?access_token=$web_access_token&openid=$openid";
    $refresh_info=https_get($refresh_url);
    $refresh_info=json_decode($refresh_info,true);
    // 如果access_token 过期
    if($refresh_info["errcode"]!==0)
    {
        //  刷新 access_token
        $refresh_access_token="https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=$appid&grant_type=refresh_token&refresh_token=$refresh_token";
        $refresh_resturn=https_get($refresh_access_token);
        $refresh_data=json_decode($refresh_resturn,true);
        // 如果刷新获取失败
        if(isset($refresh_data["errcode"]))
        {
            exit($refresh_data["errmsg"]);
        }
        // 如果成功再次赋值
        $web_access_token=$refresh_data["access_token"];
        $refresh_token=$refresh_data["refresh_token"];
    }

    // 拉取用户信息
    $user_url="https://api.weixin.qq.com/sns/userinfo?access_token=$web_access_token&openid=$openid&lang=zh_CN";
    $user_info=https_get($user_url);
    $user_info=json_decode($user_info,true);
    // 如果获取用户信息失败
    if(isset($user_info["errcode"]))
    {
        exit($user_info["errmsg"]);
    }

    /*$v=var_export($user_info,TRUE); // 获取用户信息写入数据库 测试
    file_put_contents("callback.txt",$v);*/
}

 

微信公众号授权获取用户信息

标签:appid   info   nts   net   OAuth2   通过   include   error   cgi   

原文地址:https://www.cnblogs.com/xuey/p/9346643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!