【微信开发】静默授权与弹框获取用户基本信息!

之前有写过一个获取用户信息的(用于微信登录的)

这个是那个的简单化 不需要用户点击确定(用于微信支付获取的openid)

今天把两种方法都写出来吧 以后可以直接CV使用了

获取用户登录用户信息的 点击允许的授权

 public function wxLogin()
    {
        $AppID     = Config::get('weixinpay_config.appid');
        // $redirect_uri1 = urlencode('http://admin.php1314.cn/index/wxSample/getUserInfo');
        $redirect_uri = urlencode(Config::get('weixinpay_config.redirect_uri'));
        //die();
        //跳转微信回调到redirect_uri获取code
        $url1 = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$AppID&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
        return redirect($url1);//参数snsapi_userinfo(弹框授权获取用户完整信息)
    }
    public function getUserInfo()//弹框授权
    {
        //echo '2';
        $code      = $_GET["code"];
        $AppID     = Config::get('weixinpay_config.appid');
        $Appsecret = Config::get('weixinpay_config.key');
        $url       = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$AppID&secret=$Appsecret&code=$code&grant_type=authorization_code";
        $res       = $this->sendRequest($url);
        $access_token = $res["access_token"];
        $openId       = $res['openid'];
         $getUserInfo  = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openId&lang=zh_CN";
         $user_info = $this->sendRequest($getUserInfo);
        var_dump($user_info);
        session('openid', $openId); //浏览器打开session为空的原因是 用户在微信打开 只会把session存到手机端
    }

静默授权

 public function wxLogin()
    {
        $AppID     = Config::get('weixinpay_config.appid');
        // $redirect_uri1 = urlencode('http://admin.php1314.cn/index/wxSample/getUserInfo');
        $redirect_uri = urlencode(Config::get('weixinpay_config.redirect_uri'));
        //跳转微信回调到redirect_uri获取code
        $url1 = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$AppID&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
        return redirect($url1);//参数scop=snsapi_base只获取openid
    }
    public function getUserInfo()//静默授权
    {
        //echo '2';
        $code      = $_GET["code"];
        $AppID     = Config::get('weixinpay_config.appid');
        $Appsecret = Config::get('weixinpay_config.key');
        $url       = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$AppID&secret=$Appsecret&code=$code&grant_type=authorization_code";
        $res       = $this->sendRequest($url);
        $access_token = $res["access_token"];
        $openId       = $res['openid'];
        session('openid', $openId); //浏览器打开session为空的原因是 用户在微信打开 只会把session存到手机端
    }

两者区别也说的很清楚了!
来看看代码区别吧 其实也只是一个参数的问题而已!

注意两边的代码url参数!

获取用户基本信息需要请求两次url
而获取openid只需要携带code和appid与appsecret请求一次即可!

为您推荐

评论已关闭