账户中心 我的话题 我的评论 退出系统

微信网页授权【微信客户端内打开的网页】

微信网页授权说明【微信客户端内打开的网页】

如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。


关于网页授权回调域名的说明

1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头; 

2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com无法进行OAuth2.0鉴权 


实现步骤

1、判断用户是否登录;
2、跳转到微信授权页面;
3、用户同意授权返回开发者指定页面,在此页面校验数据并利用 openid 获取用户信息;


完整代码

<?php
//请开启 session 
class wxController extends grace{
    public function index(){
        
    }
    
    public function account(){
        $gracewechat = tool('graceWeChat');
        if(empty($_SESSION['openid'])){
            //微信登录
            $backUrl = 'http://www.phpgrace.com/wx/login';
            $gracewechat->wxLogin($backUrl);
        }else{
            echo '您已经登录, openid : '.$_SESSION['openid'];
        }
    }
    
    public function login(){
        //检查 url
        if(empty($_GET['code']) || empty($_GET['state'])){exit('参数错误,请返回重试!E01');}
        if(empty($_SESSION['wxLoginState'])){exit('参数错误,请重试!E02');}
        if($_SESSION['wxLoginState'] != $_GET['state']){exit('参数错误,请重试!E03');}
        //获取用户 [ openid ]
        $gracewechat = tool('graceWeChat');
        $user = $gracewechat->wxLoginBack();
        if(empty($user) || empty($user['openid'])){exit('登录失败');}
        //获取用户信息 [ 用户全部信息 ]
        $user = $gracewechat->getUser($user['openid']);
        //利用 session 记录 openid
        session_start();
        $_SESSION['openid'] = $user['openid'];
        session_write_close();
        print_r($user);
    }
}