快乐每一天

自己选择的路,跪着也要走下去...

标签 微信开发 下的文章

微信关于网页授权access_token和普通access_token的区别

本文也是做一个笔记,根据自己的调用经历,再到网上查阅资料去验证,防止自己弄混淆。如果以后发现了新的异同,会在进行补充.

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。小程序无需配置IP白名单。

一、两种access_token的获取:

网页授权access_token的获取:
https://blog.csdn.net/cl11992/article/details/86528704
全局access_token的获取:
https://blog.csdn.net/cl11992/article/details/86304653

二、官方解释
关于网页授权access_token和普通access_token的区别

微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;
其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。

三、自己相同点
同名
有效期:两者有效时间都是7200s。

四、自己不同点
网页授权access_token需要先获取code,才能才获取网页授权access_token;全局access_token可以直接调接口进行获取。
使用范围:通过网页授权获得的access_token,只能获取到对应的微信用户信息(授权作用域scope必须为snsapi_userinfo),与微信用户是一对一关系;而全局的access_token可以获取所有用户信息。
次数限制:网页授权的access_token获取次数没有限制;全局access_token每天获取最多次数为2000次(这个次数可以申请增加)。

阅读全文

PHP检测是否关注公众号,亲测可用

/*检测是否关注公众号*/
    /*subscribe    用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。*/
    /*https://www.cnblogs.com/mracale/p/9318349.html*/
    public function checkisgz(){
        $request = request();
        $callback = $request->url(true);//微信服务器回调url,这里是本页url

        $appid = config('appid');
        $secret = config('secret');

//微信网页授权获取openid
        $web_url=$callback;

        if (!isset($_GET['code'])) {
            $redirect_uri=urlencode($web_url);
            $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");exit();
        }
        $code=trim($_GET['code']);
        $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code';
        $access=file_get_contents($url);
        $data=json_decode($access,true);
        $access_token=$data['access_token'];
        $url='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid=OPENID&lang=zh_CN';
        $user=file_get_contents($url);
        $arr=json_decode($user,true);
//获取用户的openid
        $openid=$arr['openid'];

        $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
        $access=file_get_contents($url);
        $access_arr=json_decode($access,true);
//非网页的access_token
        $access_token=$access_arr['access_token'];

        $url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
        $res=file_get_contents($url);
        $res=json_decode($res,true);
//        var_dump($res);
        return $res['subscribe'];
    }
阅读全文