laravel - Laravel 社交名流回调 - 无法访问此站点
问题描述
我为一些令人毛骨悚然的问题而苦苦挣扎。我问这个问题是因为我很久没有找到解决方案。我使用社交名流在我的网站上创建用户。问题在于来自 facebook 和 google 服务的回调。我一直得到“无法访问此站点”。这是我的主域 - 当我之前在子域中测试时,一切正常。我尝试创建不同的 Facebook 应用程序 - 不工作。我尝试在回调 URL 末尾添加和删除“/” - 不起作用。
有我的代码(在子域中运行良好)。
配置/服务.php
'facebook' => [
'client_id' => env('FACEBOOK_ID'),
'client_secret' => env('FACEBOOK_SECRET'),
'redirect' => env('FACEBOOK_URL'),
],
'google' => [
'client_id' => env('GOOGLE_ID'),
'client_secret' => env('GOOGLE_SECRET'),
'redirect' => env('GOOGLE_URL'),
],
Auth/AuthController.php
<?php
namespace App\Http\Controllers\Auth;
use Auth;
use Socialite;
use App\User;
use Session;
use Redirect;
use App\Http\Controllers\Controller;
class AuthController extends Controller
{
/**
**_ Redirect the user to the OAuth Provider.
**_ @return Response**/
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
//Obtain the user information from provider. Check if the user already exists in our
//database by looking up their provider_id in the database.
//If the user exists, log them in. Otherwise, create a new user then log them in. After that
//redirect them to the authenticated users homepage.
//@return Response
public function handleProviderCallback($provider)
{
$user = Socialite::driver($provider)->user();
$authUser = $this->findOrCreateUser($user, $provider);
try{
if($authUser != null){
try{
Auth::login($authUser, true);
Session::flash('message', "Nice to see you.");
return Redirect::to('offers');
}catch(\Exception $e){
Session::flash('message', "Can't sign in a user.");
return Redirect::to('offers');
}
}else{
Session::flash('message', "Can't sign in a user.");
return Redirect::to('offers');
}
}catch(\Exception $e){
Session::flash('message', "Can't sign in a user.");
return Redirect::to('offers');
}
}
//If a user has registered before using social auth, return the user
//else, create a new user object.
//@param $user Socialite user object
//@param $provider Social auth provider
//@return User
public function findOrCreateUser($user, $provider)
{
$authUser = User::where('provider_id', $user->id)->first();
if ($authUser) {
return $authUser;
}
try{
Session::flash('message', "Thank you. You created an account. Enjoy.");
return User::create([
'name' => $user->name,
'email' => $user->email,
'provider' => $provider,
'provider_id' => $user->id
]);
}catch(\Exception $e){
Session::flash('message', "Can't sign up a user.");
return;
}
}
}
路线/api.php
Route::get('auth/{provider}', 'Auth\AuthController@redirectToProvider');
Route::get('auth/{provider}/callback', 'Auth\AuthController@handleProviderCallback');
有效的 OAuth 重定向 URI(在 fb 开发者页面中):
https://www.last-bee.com/api/auth/facebook/callback
我非常感谢任何帮助/提示来解决这个问题。:)
解决方案
推荐阅读
- jvm - 是否可以同时对 alloc 和 itimer 使用 async-profiler
- python - Django-Import-Export:导入错误 - AttributeError:“str”对象没有属性“year”
- firebase - 可以在 main 中调用 firebase.initializeApp()
- javascript - 两个 Javascript 日期之间的时差
- node.js - 找不到模块“约翰尼五”?
- ios - Swift UI - HostingController 添加了不需要的导航栏
- java - android studio 缺少类向导
- javascript - 对象数组不使用 setState 和 map 渲染
- arrays - 在 React 组件中访问 JSON 数组中的对象
- javascript - 来自 Heroku 和 Webpack 的配置变量