我有一个以Laravel 8为后端的应用程序。我已经使用了一个名为"accounts“的自定义表,我想使用一些社交登录进程,从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')
],
];我不知道我做错了什么,但它似乎是一些与项目不是网络和使用拉拉只作为后端。有同样问题的人吗?
编辑
当我在dd()上使用Socialite::driver($provider)->stateless()->redirect()时,我得到了如下所示的对象:
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()。
发布于 2021-12-18 04:24:21
你的回拨路线
Route::get('account/{provider}/login/callback', [LoginSocialController::class, 'handleProviderCallback'])->name('social_login_callback');必须与以前在Facebook开发者中创建的FB应用程序相同

并检查.env文件中的应用程序机密和应用程序id
https://stackoverflow.com/questions/70398035
复制相似问题