Laravel 8 Socialite Facebook 重定向不起作用/返回 null
Posted
技术标签:
【中文标题】Laravel 8 Socialite Facebook 重定向不起作用/返回 null【英文标题】:Laravel 8 Socialite Facebook redirect didn't work/return null 【发布时间】:2022-01-20 15:59:46 【问题描述】:我有一个使用 Laravel 8 作为后端的应用程序。我已经有使用名为“帐户”的自定义表的身份验证过程,我想使用一些社交登录过程,从 Facebook 开始。问题是,我在编码时遇到了一些问题。我的控制器没有正确重定向到 Facebook 并返回 "data": null, "error": null
。我搜索了这个问题,已经改了一些代码来解决这个问题,但问题仍然存在。
路线
use App\Http\Controllers\LoginSocialController;
Route::get('account/provider/login', [LoginSocialController::class, 'redirectToProvider'])->name('social_login');
Route::get('account/provider/login/callback', [LoginSocialController::class, 'handleProviderCallback'])->name('social_login_callback');
控制器
namespace App\Http\Controllers;
use Laravel\Socialite\Facades\Socialite;
use App\Services\AccountService;
use App\Services\AuthService;
use Exception;
class LoginSocialController extends Controller
public function redirectToProvider($provider)
return Socialite::driver($provider)->stateless()->redirect();
public function handleProviderCallback($provider)
$providerAccount = Socialite::driver($provider)->stateless()->user();
dd($providerAccount);
services.php
return [
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('FACEBOOK_CALLBACK')
],
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_CALLBACK')
],
'apple' => [
'client_id' => env('APPLE_CLIENT_ID'),
'client_secret' => env('APPLE_CLIENT_SECRET'),
'redirect' => env('APPLE_CALLBACK')
],
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => env('GITHUB_CALLBACK')
],
];
我不知道我做错了什么,但这似乎与项目不是网络并且仅使用 laravel 作为后端有关。有人遇到同样的问题吗?
编辑
当我在Socialite::driver($provider)->stateless()->redirect()
上使用dd()
时,我得到一个看起来像这样的对象:
https://www.facebook.com/v3.3/dialog/oauth?client_id=123456789&redirect_uri=https%3A%2F%2F%2Fapi%2Faccount%2Ffacebook%2Flogin%2Fcallback&scope=email&response_type=code&state=nesi0U0nBm64Y9jHq1G
(已编辑)
奇怪的是,我只是调用端点并没有得到这个响应。所以我不得不使用dd()
。
【问题讨论】:
你没有从你的控制器方法中“返回”一个重定向,那么它将如何重定向? 这是我作为变量调用的测试,但即使使用“return”重定向也不起作用 【参考方案1】:你的回调路径
Route::get('account/provider/login/callback', [LoginSocialController::class, 'handleProviderCallback'])->name('social_login_callback');
您的 FB 应用程序必须与您之前在 Facebook developer 中创建的相同
并检查您的 .env
文件中的应用程序密钥和应用程序 ID
【讨论】:
之前已经检查过了,当在开发者的facebook页面中没有正确设置回调时,返回的是一个页面说URL没有正确设置以上是关于Laravel 8 Socialite Facebook 重定向不起作用/返回 null的主要内容,如果未能解决你的问题,请参考以下文章
无法将 Laravel / Socialite 与 Lumen 一起使用
使用 Laravel Socialite 登录 Facebook
Laravel Socialite 与 Facebook 未登录