更新 2018 - laravel 5.6 - 社交名流 3.0
对于看起来/应该很容易的东西来说,这有点棘手,但无论如何,这就是我让事情为我工作的方式。
服务器端
您可以在社交网站文档中找到这些说明和更多详细信息
安装
composer require laravel/socialite
配置
在配置/服务中.php添加
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('FACEBOOK_CALLBACK_URL'),
],
在 .env 文件中添加
FACEBOOK_CLIENT_ID=paste_client_id_here
FACEBOOK_CLIENT_SECRET=paste_client_secret_here
FACEBOOK_CALLBACK_URL=https://www.example.com/auth/facebook/callback
在路由/网络中.php添加
Route::get('auth/facebook/', 'Auth\FacebookController@redirect')->name('auth.facebook');
Route::get('auth/facebook/callback', 'Auth\FacebookController@callback')->name('auth.facebook.callback');
在 App\Http\Controllers\Auth 中添加新的控制器 FacebookController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\User;
use Socialite;
class FacebookController extends Controller {
/**
* Create a new controller instance.
*
* @return void
*/
public function redirect()
{
return Socialite::driver('facebook')->redirect();
}
/**
* Create a new controller instance.
*
* @return void
*/
public function callback(Request $request)
{
try {
$facebookAccount = Socialite::driver('facebook')->user();
// your logic here...
return redirect()->route('your.route.name');
} catch (Exception $e) {
return redirect()->route('auth.facebook');
}
}
}
脸书方面
转到 https://developers.facebook.com/apps 并创建新应用程序(如果您还没有应用程序)
并使您的应用程序设置如下,这些屏幕截图如下:
重要提示
如果您在本地机器中进行开发,则必须使用像ngrok这样的工具,这些工具提供指向本地主机的安全链接。
在Facebook登录设置中,使用ngrok提供的url更改 https://www.example.com,例如 https://8b0215bc.ngrok.io。
这是在我的本地机器上进行开发时对我有用的唯一方法。