微信网页授权

资料

1.微信官网--网页授权

2.官网----测试版公众号
博客---微信公众平台开发——微信授权登录(OAuth2.0)

3.官网--网页扫码登录
博客--微信开放平台开发——网页微信扫码登录(OAuth2.0)

慕课网视频
学生笔记

实现步骤

/*
1 第一步:用户同意授权,获取code
2 第二步:通过code换取网页授权access_token和opened
3 第三步:刷新access_token(如果需要)
4 第四步:根据openid和access_拉取用户信息(需scope为 snsapi_userinfo)
5 附:检验授权凭证(access_token)是否有效

此例子
回掉地址是  http://www.vipjianzhi.cn/callback.php
*/

我这里在我自己的网站上做了测试,代码同上。下面的可以不看.我们访问index.php页面,扫码确认后获取到code直接跳转到callback.php页面

  • 注意1:我们做测试的时候,是不可以用pc端的,也不可以在微信手机直接打开。我们需要扫码才可以。这里推荐一个生成二维码的网站 草料二维码
草料二维码
  • 注意2:在微信公众号配置网页账号的时候,我看资料上写的是写全路径,比如http://www.qq.com/login.html,但是我这样写发现不行。我把后面的uri去掉,直接写域名就可以了http://www.qq.com/
    image.png

测试1 scope=snsapi_base

    // callback.php  
          <?php
              //此函数可以获取到access_token和opened
            function getUserOpenId(){
                // 2.获取到网页授权的access_token和openid
                $appid = "wxf2a6e367141226f2";
                $appsecret = "1913207444c948b1c9e69de89132e529";
                $code = $_GET['code'];
                // 此处的url是 微信-第二步:通过code换取网页授权access_token
                $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";
                $res = file_get_contents($url);
                echo'<pre>';
                var_dump($res);
                echo'</pre>';
                }
            getUserOpenId();

          
            // index.php
                       function getCode(){
                // 1.获取到code
                $appid = "wxf2a6e367141226f2";
                $redirect_uri = urlencode("http://www.vipjianzhi.cn/callback.php");
                $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
                header('location:'.$url);
        }

        getCode();
            getBaseInfo();
    ~如果没问题,应该显示以下代码
                    {
               "access_token":"ACCESS_TOKEN",
               "expires_in":7200,
               "refresh_token":"REFRESH_TOKEN",
               "openid":"OPENID",
               "scope":"SCOPE",
               "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
            }
测试1`scope=snsapi_base`结果打印
测试1`scope=snsapi_base`结果json_decode($res)之后
测试1`snsapi_userinfo `结果
测试1,`snsapi_userinfo `,如果已经确认过之后,再次扫码的结果
  • 测试2:获取用户的详细信息
// index.php----scope=snsapi_userinfo
                       function getCode(){
                // 1.获取到code
                $appid = "wxf2a6e367141226f2";
                $redirect_uri = urlencode("http://www.vipjianzhi.cn/callback.php");
                $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
                header('location:'.$url);
        }

        getCode();
<?php
//  callback.php ----scope=snsapi_base
              //此函数最终获得的是用户的详细信息
function getUserInfo(){
        // 2.获取到网页授权的access_token
        $appid = "wxf2a6e367141226f2";
        $appsecret = "1913207444c948b1c9e69de89132e529";
        $code = $_GET['code'];
        // 此处的url是 微信-第二步:通过code换取网页授权access_token
        $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";
         $res = file_get_contents($url);
        $res = json_decode($res);
        $access_token = $res->access_token;
        $openid = $res->openid;
        // 这一步,是获取用户的详细信息
        $url = $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
        $res = file_get_contents($url);
        $res = json_decode($res);
        echo '<pre>';
        var_dump($res);
        echo '</pre>';
   }
getUserOpenId();
测试2,打印用户详情结果`lang=zh_CN`
  • 注意:如果我们刚开始在index.php页面中获取 code的时候,使用的是scop= snsapi_base,我们得到的结果是下面的图,并不能得到用户的详细信息。()虽然此时已经获取了openidaccess_token
    image.png
  • 我们如果选择是lang=zh_CN,有可能会出现图测试2,打印用户详情结果那样的结果,我也测试了下lang=en
    `lang=en`

以下是慕课网截屏笔记

image.png
image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容