Laravel 微信 Token 配置 与微信网页授权操作

微信开发准备工作

1、申请公众号测试账号地址,先注册账号

http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

2、更改接口信息配置的Token与URL地址
file

注:该URL是直接指向到具体能访问到的地址。

3、设置JS安全域名与设置网页授权回调地址
file

功能列表 -- 网页服务

file
file

4、开始接入微信验证Token

<?php
namespace Test;

class TestController extends Controller 
{
    public function tokenSignature()
    {
        $timestamp = $_GET['timestamp'];
        $nonce = $_GET['noonce'];
        $token = 'sxs-hd'; //该处的值应该和第二条的TOKEN值一样
        $signature = $_GET['signature'];
        $array = array($timestamp, $nonce, $token);
        sort($array);
        //排序之后的数据拼接好使用sha1加密
        $tmpstr = implode('', $array);
        $tmpstr = sha1($tmpstr);
        //将加密后的字符串与singature进行对比,判断是否来自微信请求
        if ($tmpstr == $signature) {
            exit($_GET['echostr']);
        }
    }
}

5、获取自身的access_token值

<?php
    public function get_access_token()
    {
        $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='. self::APP_ID .'&secret=' . self::APP_SECRET;
        $token = file_get_contents($url);
        var_dump($token);

        //正常返回
        {
            "access_token":"ACCESS_TOKEN",
            "expires_in":7200
        }
        //失败返回
        {
            "errcode":40013,
            "errmsg":"invalid appid"
        }
    }

6、获取用户网页身份授权

  • 第一步:用户同意授权,获取code值
    <?php
    $params = http_build_query([
        'appid' => '你的APPID',
        'redirect_uri => urlencode('https://mm.shaxiaoseng.com/Test/code'), //获取之后回调地址
        'response_type' => 'code',
        'scope' => 'snsapi_base',
        'state' => 123
    ]);
    $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' . $params . '#wechat_redirect';
    #把上面的url在微信客户端打开就能看到返回的code值
  • 第二步:通过code换取网页授权access_token

    //根据第一步获取到的code并回调到本方法
    public function code()
    {
        #根据拿到的code值去访问用户的access_token令牌
        $params = http_build_query([
                'appid' => 'APPID',
                'secret' => 'APP_SECERT',
                'code' => $_GET['code'],
                'grant_type' => 'authorization_code'
        ]);
        $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?' . $params;
        $result = file_get_contents($url);
    
        var_dump($result);
    
        //正确返回
        { 
                "access_token":"ACCESS_TOKEN",
                "expires_in":7200,
                "refresh_token":"REFRESH_TOKEN",
                "openid":"OPENID",
                "scope":"SCOPE" 
        }
    }
  • 第三步:刷新access_token令牌
  • 第四步:拉取用户信息
  • 第五步:检验授权凭证(access_token)是否有效

其它的开发可以直接查看微信官方手册 [手册地址]

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
本作品采用《CC 协议》,转载必须注明作者和本文链接
994914376
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

wdnmd $_GET['nonce'];
$nonce = $_GET['noonce'];

4年前 评论

处理授权接口参数写错了, 跑不起来

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!