afzalh / laravel-passport-facebook-login
Laravel Passport 的 Facebook Token 请求授权
2.0.4
2018-12-08 09:23 UTC
Requires
README
提供一个新的 Laravel Passport 授权客户端名为 facebook_login
,允许您仅使用 Facebook 登录令牌登录用户。
如果电子邮件地址不存在,将创建一个新的用户(可选地分配一个角色 - $user->attachRole(ID)
)。
安装
使用 composer 安装 composer require afzalh/laravel-passport-facebook-login
。使用主要版本 1 以实现 Passport 4 及以下与 Laravel 5.6 的兼容性。
版本
- 目前仅支持 Laravel 5.6 和 Passport 5.0
依赖关系
"laravel/passport": "^5.0"
"facebook/graph-sdk": "^5.6"
设置
- 在您的提供者列表中将
AfzalH\PassportFacebookLogin\FacebookLoginGrantProvider::class
添加到Laravel\Passport\PassportServiceProvider
之后。 - 将
AfzalH\PassportFacebookLogin\FacebookLoginTrait
特性添加到您的User
模型(或您配置与 Passport 一起工作的任何模型)。 - 运行
php artisan vendor:publish
,这将创建一个config/facebook.php
文件。 - 在您的
.env
文件中输入您的 Facebook 应用详情:FACEBOOK_APP_ID
和FACEBOOK_APP_SECRET
。 - 可选:要自动将一个角色(https://github.com/Zizaco/entrust)分配给新用户,请使用 'ATTACH_ROLE' 环境设置。
配置
/* |-------------------------------------------------------------------------- | Application |-------------------------------------------------------------------------- | | The facebook ID and secret from the developer's page | */ 'app' => [ 'id' => env('FACEBOOK_APP_ID'), 'secret' => env('FACEBOOK_APP_SECRET'), ], /* |-------------------------------------------------------------------------- | Registration Fields |-------------------------------------------------------------------------- | | The name of the fields on the user model that need to be updated, | if null, they shall not be updated. (valid for name, first_name, last_name) | */ 'registration' => [ 'facebook_id' => env('FACEBOOK_ID_COLUMN', 'facebook_id'), 'email' => env('EMAIL_COLUMN', 'email'), 'password' => env('PASSWORD_COLUMN', 'password'), 'first_name' => env('FIRST_NAME_COLUMN', 'first_name'), 'last_name' => env('LAST_NAME_COLUMN', 'last_name'), 'name' => env('NAME_COLUMN', 'name'), 'attach_role' => env('ATTACH_ROLE', null), ],
如何使用
- 向
https://your-site.com/oauth/token
发送一个 POST 请求。 - POST 请求体应包含
grant_type
=facebook_login
fb_token
={来自 Facebook 登录的令牌}
.- client_id
- client_secret
- 如果成功,将返回一个
access_token
和refresh_token
。
假设
- 您的
User
模型具有以下字段 -
facebook_id
-
name
或first_name
&last_name
-
email
-
password
为什么不使用 Laravel 5.5 的自动发现?
我们发现使用自动发现可能会引发问题,因为这个包依赖于 Laravel Passport 在此包之前加载。有时这不会发生,导致问题,因为 Laravel Passport 设置了一个单例,我们引用了它。
我们希望有一天 Laravel 的自动发现将得到修复,以便更好地处理依赖项。