首頁  >  文章  >  php框架  >  ThinkPHP5框架如何進行微信公眾號網頁授權

ThinkPHP5框架如何進行微信公眾號網頁授權

PHPz
PHPz原創
2023-04-14 11:21:331567瀏覽

隨著微信公眾號越來越受歡迎,越來越多的人開始創建自己的公眾號。其中,網頁授權是公眾號開發中較常見的開發方式。本文將介紹使用ThinkPHP5框架如何進行微信公眾號網頁授權的步驟。

一、註冊公眾號並取得AppID和AppSecret

在進行微信公眾號網頁授權之前,首先需要註冊一個微信公眾號,併申請開發者權限。申請成功後,可以在「開發者中心」中取得AppID和AppSecret兩個重要的參數。

二、設定公眾號資訊

在ThinkPHP5框架中,我們可以在config目錄下新建一個wechat.php文件,用來存放我們的公眾號設定資訊。在該文件中,我們需要配置以下資訊:

<?php
return [
    &#39;app_id&#39; => 'your appid',
    'app_secret' => 'your appsecret',
    'auth_redirect' => 'your callback url',
];

其中:

  • #app_idapp_secret是我們在公眾號上管理介面獲得的參數。
  • auth_redirect是微信網頁授權後的回呼位址,要求必須是公網可存取的URL位址。

三、取得網頁授權url

在我們呼叫微信網頁授權介面前,需要建構網頁授權url。我們可以在控制器中加入以下程式碼:

$config = config('wechat');
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='
        . $config['app_id']
        . '&redirect_uri='
        . urlencode($config['auth_redirect'])
        . '&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';

以上程式碼中,我們透過config函數取得到了先前設定的公眾號訊息,並建構了一個微信網頁授權的URI。其中,response_type=code表示使用code方式進行授權,scope=snsapi_userinfo表示授權範圍為取得使用者基本資訊。

四、取得網頁授權code

建構好網頁授權的URL後,我們需要跳轉該URL,進行授權。授權成功後,微信伺服器會將code參數透過GET方式傳回。我們可以在控制器中加入以下程式碼,用於取得code。

if (isset($_GET['code'])) {
    $code = $_GET['code'];
} else {
    $this->redirect($url);
}

以上程式碼中,我們先判斷URL中是否包含了code參數。如果有,則表示使用者已經授權成功,我們將取得到的code儲存起來,以便後續使用。如果沒有,則需要進行跳轉,進行網頁授權。

五、取得使用者access_token和openId

在授權成功後,後續的操作需要使用access_token和openId。我們可以在控制器中加入以下程式碼,用於取得使用者的access_token和openId。

$accessTokenUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='
                    . $config['app_id']
                    . '&secret='
                    . $config['app_secret']
                    . '&code='
                    . $code
                    . '&grant_type=authorization_code';
$accessTokenResponse = json_decode(file_get_contents($accessTokenUrl), true);
if (isset($accessTokenResponse['errcode'])) {
    throw new \Exception('ERROR ' . $accessTokenResponse['errcode'] . ': ' . $accessTokenResponse['errmsg']);
}
$accessToken = $accessTokenResponse['access_token'];
$openId = $accessTokenResponse['openid'];

以上程式碼中,我們首先建構了一個請求access_token的URL,並向該URL發送了請求,獲取到了回應結果。如果回應結果中包含了errcode,則表示請求出現了錯誤,我們將拋出一個例外;否則,我們將取得到的access_token和openId儲存起來,以便後續使用。

六、取得使用者詳細資料

在取得到使用者的access_token和openId後,我們可以透過以下程式碼,取得到使用者的詳細資料:

$userInfoUrl = 'https://api.weixin.qq.com/sns/userinfo?access_token='
                . $accessToken
                . '&openid='
                . $openId
                . '&lang=zh_CN';
$userInfoResponse = json_decode(file_get_contents($userInfoUrl), true);
if (isset($userInfoResponse['errcode'])) {
    throw new \Exception('ERROR ' . $userInfoResponse['errcode'] . ': ' . $userInfoResponse['errmsg']);
}

以上程式碼中,我們建構了一個請求使用者資訊的URL,並向該URL發送了請求,獲取到了回應結果。如果回應結果中包含了errcode,則表示請求出現了錯誤,我們將拋出一個例外。

至此,我們已經成功地完成了微信公眾號網頁授權的過程!

以上是ThinkPHP5框架如何進行微信公眾號網頁授權的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn