Laravel 微信 Token 配置 與微信網頁授權操作

994914376發表於2018-04-11

微信開發準備工作

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

相關文章