Laravel 5.6 with socialite login facebook

问题描述 投票:0回答:1

我尝试使用Facebook来使登录社交网站。我已经在developers.facebook.com上注册并获得了APP_ID和Secret_code,并已在.env文件和config / services.php中实现了它。但是,当我输入我的用户名和密码facebook之后,它无法将我定向到主页。我使用了来自laravel的身份验证支架

错误

This site can't be reach

LoginController.php

<?php

 namespace App\Http\Controllers\Auth;
 use App\User;
 use Socialite;
 use Auth;
 use App\Http\Controllers\Controller;
 use Illuminate\Foundation\Auth\AuthenticatesUsers;


 class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/

use AuthenticatesUsers;

/**
 * Where to redirect users after login.
 *
 * @var string
 */
protected $redirectTo = '/home';

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('guest')->except('logout');
}

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);
    Auth::login($authUser, true);
    return redirect($this->redirectTo);
}

/**
 * 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;
    }
    return User::create([
        'name'     => $user->name,
        'email'    => $user->email,
        'provider' => $provider,
        'provider_id' => $user->id
    ]);
}
  }

。env

FB_ID=321**14684*****
FB_SECRET=40fb4782*****5b7b88391f4599f18c7
FB_URL=https://localhost:8000/auth/facebook/callback

web.php

Route::get('/', function () {
return view('homepage');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::get('auth/{provider}', 'Auth\LoginController@redirectToProvider');
Route::get('auth/{provider}/callback', 
'Auth\LoginController@handleProviderCallback');

**App\User.php**
<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

 class User extends Authenticatable
 {
use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password','provider','provider_id'
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];
 }

Config / services.php

        'facebook' => [
        'client_id'     => env('FB_ID'),
        'client_secret' => env('FB_SECRET'),
        'redirect'      => env('FB_URL'),
        ],

请给我一些建议以解决此问题。对不起,我的英语不好。谢谢。

php laravel facebook laravel-5.6 laravel-socialite
1个回答
0
投票

您无法在本地主机上对其进行测试。 Facebook需要一个URL公共URL来进行重定向回调。

© www.soinside.com 2019 - 2024. All rights reserved.