Laravel?? WeChat ??? ??? ?? ????? ???? ??
??? ???? ??? ??? ?? ?3? ???? ???? ??? ???? ???? ? ?? ?? ?? ??? ?????. ? ? WeChat ???? ?? ?? ?? ? ? ?????. ?????? ??? ????? ???????? ??? ?? WeChat ???? ???? ??? ????? ?????. ? ???? Laravel ??????? ????? ???? WeChat ??? ?? ??? ???? ??? ???? ???? ?? ??? ?????.
?? Laravel ?????? ?????? ???? ???. ???? ?? ?? ??? ?????:
composer global require "laravel/installer"
???? ???? ???? ????? ???? ?? ??? ???? ? Laravel ????? ?????.
laravel new wechat-login
???? ??? ??? ? ??? ??? ???? ???. ???. ???? ???? ????? ???? ?? ??? ?????:
cd wechat-login composer require overtrue/laravel-wechat
???? WeChat? ???? ???? ? ??? Laravel ?????? ???? ???. ????? .env
??? ?? ?? ??? ?????. .env
文件,填寫以下內(nèi)容:
WECHAT_APPID=your_app_id WECHAT_SECRET=your_app_secret WECHAT_REDIRECT_URI=http://your_callback_url
其中,your_app_id
和 your_app_secret
需要替換為你自己的微信開放平臺(tái)的應(yīng)用ID和密鑰。your_callback_url
是用戶授權(quán)后的回調(diào)URL,需要與你的應(yīng)用進(jìn)行對(duì)接。
然后,我們需要?jiǎng)?chuàng)建一個(gè)中間件來處理微信登錄授權(quán)邏輯。在終端中執(zhí)行以下命令:
php artisan make:middleware WeChatAuthMiddleware
運(yùn)行上述命令后,Laravel將會(huì)在 app/Http/Middleware
目錄下生成一個(gè) WeChatAuthMiddleware.php
文件。打開該文件,將以下代碼添加到 handle
方法中:
<?php namespace AppHttpMiddleware; use Closure; use EasyWeChatFactory; class WeChatAuthMiddleware { public function handle($request, Closure $next) { if ($request->has('code')) { $app = Factory::officialAccount(config('wechat')); $oauth = $app->oauth; $user = $oauth->user(); // 保存用戶信息或進(jìn)行其他處理邏輯 } else { $app = Factory::officialAccount(config('wechat')); $oauth = $app->oauth; return $oauth->redirect(); } return $next($request); } }
上述代碼中,我們使用了 EasyWeChat 這個(gè)開源庫(kù)來處理微信登錄邏輯。我們?cè)谥虚g件中判斷請(qǐng)求中是否包含了 code
參數(shù),如果存在,則說明用戶已經(jīng)授權(quán),我們可以通過該參數(shù)來獲取用戶的信息。如果不存在 code
參數(shù),則說明用戶尚未授權(quán),我們需要進(jìn)行微信登錄授權(quán)的跳轉(zhuǎn)。
接下來,我們需要將中間件注冊(cè)到 Laravel 框架中。打開 app/Http/Kernel.php
文件,將以下代碼添加到 $routeMiddleware
數(shù)組中:
'wechat.auth' => AppHttpMiddlewareWeChatAuthMiddleware::class,
然后,我們需要給某個(gè)路由或者路由組應(yīng)用這個(gè)中間件。在 routes/web.php
文件中,將以下代碼添加到路由閉包中:
Route::group(['middleware' => ['wechat.auth']], function () { // 添加需要微信登錄授權(quán)的路由 });
現(xiàn)在,我們已經(jīng)完成了在 Laravel 中使用中間件實(shí)現(xiàn)微信登錄授權(quán)的配置。當(dāng)用戶訪問被定義為需要微信登錄授權(quán)的路由時(shí),系統(tǒng)會(huì)先進(jìn)行微信登錄授權(quán)的檢查,如果用戶尚未授權(quán),則會(huì)跳轉(zhuǎn)到微信登錄頁(yè)面進(jìn)行授權(quán),授權(quán)成功后會(huì)再次返回到我們定義的回調(diào)URL,并包含了 code
rrreee
your_app_id
? your_app_secret
? ???? ??? ???. ??? WeChat ?? ??? ?????? ID ? ?. your_callback_url
? ??? ?? ? ?? URL?, ??????? ????? ???. ?? ?? WeChat ??? ?? ??? ???? ?? ????? ???? ???. ????? ?? ??? ?????: ??rrreee??? ??? ???? Laravel? app/Http/Middleware
????? WeChatAuthMiddleware.php
??? ?????. ??? ?? handle
???? ?? ??? ?????. ??rrreee??? ????? EasyWeChat ?? ?? ?????? ???? WeChat ??? ??? ?????. ??????? ??? code
????? ???? ??? ?????. ???? ?? ???? ?????? ???? ? ????? ?? ???? ??? ?? ? ????. code
????? ???? ??? ???? ???? ???? ????? WeChat ??? ???? ???? ???. ???????? Laravel ?????? ????? ???? ???. app/Http/Kernel.php
??? ?? $routeMiddleware
??? ?? ??? ?????. ??rrreee???? ?? ?? ?? ?? ??? ???? ???. ?? ????. routes/web.php
???? ??? ???? ?? ??? ?????: ??rrreee???? Laravel?? WeChat ??? ??? ???? ?? ????? ???? ??? ???????. ??? ???? WeChat ??? ??? ??? ??? ??? ?? ???? ?? WeChat ??? ??? ?????. ???? ???? ?? ?? ??? ??? ? WeChat ??? ???? ?????. ?? URL?? ??? ??? ?? ? ?? code
????? ???? ????. ?????? Laravel?? WeChat ??? ??? ?? ????? ???? ??? ?? ?? ? ?? ?????. ? ?? ?? ?? ???? WeChat ??? ?? ??? ??? ??? ????. ??? ??? Laravel?? WeChat ??? ??? ?? ????? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

Laravel?? ????? ???? ??? ???? ??? ??? ????? ???? ??? ??? ??? ??? ? ?? Laravel ?????? ??? ?????. ???? ?? ??, ?? ? ?? ?? ??? ????? ???? ??? ??? ?? ????. ? ????? ????? ???? Laravel?? ??? ???? ??? ???? ???? ?? ??? ?????. ?? ?? ?? ????? ???? ???. ?? ??? ???? ???? ???? ??? ? ????.

Laravel? ???, ?? ???? ?? ??? ?? ? ??????? ???? ?? ?? ??? ??? ???? ?? ?? PHP ? ?????? ????????. ??? ?? ? ??? ??? ?? ?? ?? ??? ??? ? ?? ???????. ?? ???? ????? ???? ???? ?? ??? ???? ??? ?? ???????. Laravel ?????? ?? ?? Laravel ??????? ???? ???. ??? ??? ??? ? ????

Laravel ????? 1. ?? ? ?? 2. HTTP ?? ? ?? ?? 4. ?? ? ???? 5. ?????? ?? ??? ?? ????? ???? ???? ??? ???? ??? ??????? ??? ?? ??? ?? ??? ? ????.

Laravel?? WeChat ??? ??? ?? ????? ???? ?? ??? ???? ??? ??? ?? ?3? ???? ???? ??? ???? ???? ? ?? ?? ?? ??? ?????. ? ? WeChat ???? ?? ?? ?? ? ? ?????. ?????? ??? ????? ???????? ??? ?? WeChat ???? ???? ??? ????? ?????. ? ???? Laravel ??????? ????? ???? WeChat ??? ?? ??? ???? ??? ???? ???? ?? ??? ?????. ?? Larav? ?????? ???? ???.

Laravel ????: ??????? ?????? ?????? ? ?? ?? ?? ? ??????? ???? ?? ??? ? ?????? ?????? ? ?? ??? ?? ??? ?????. ?? ?? ??????? ???? ??????? ???? ?? ?? ??????? ??? ???? ?? ??? ? ????. Laravel ?????? ???? ??? ?????? ?????? ? ?? ?? ??? ????, ????? ???? ??? ??? ??????? ?? ?? ????? ? ????. ?? Lar? ???? ???.

Laravel?? CORS(?? ?? ??? ??)? ???? ?? ????? ???? ?? ??: CORS(?? ??? ??? ??)? ? ??????? ?? ??? ???? ???? ??? ? ??? ?? ???? ???????. ?? ???? PHP ?????? Laravel? ????? ???? ??? ? ??? ?????? CORS? ???? ??? ??? ?????. ? ????? ???? ??, ??? ??? ?? ? ?? ?? ??? ???? Laravel?? CORS? ???? ?? ????? ???? ??? ?????.

Laravel ????? ??, ???, ??, ?? ? ??? ??? ?? ?? ???? ?????. ?? ????? ?? ??? ?????? ?? ????? ?? ???? ???? ?? ????? ?? ??? ???? ?? ????? ?? ?? ???? ? ???? ??? ?? ???? ??? ?? ????? ???? ???? BaseMiddleware ???? ?????.

Laravel ????: ?????? ?? ? ?? ?? ??? ??: Laravel? ????? ?? ?? ? ???? ??? ??? ???? ? ???? ??? PHP ????????. ? ???? Laravel ????? ???? ?????? ?? ? ?? ??? ????? ?????? ??? ???? ????? ??? ??? ? ????. ????? ?????? Laravel?? ????? HTTP ??? ???? ?????. ??? ??????? ???? ??? ?? ??? ? ????.
