adamwathan/eloquent-oauth-l4

此包已被废弃,不再维护。未建议替代包。

Laravel和Eloquent的简单OAuth身份验证

v0.2.1 2017-03-25 12:54 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:50:35 UTC


README

重要:此包不再积极维护。 对于错误修复和新功能,请进行分支。

Eloquent OAuth L4

This Project Has Been Deprecated.

注意:如果您正在使用Laravel 5,请使用Laravel 5包

Eloquent OAuth是一个为Laravel 4设计的包,旨在使对各种OAuth提供者的身份验证变得极其简单。在配置文件中指定您的应用程序密钥/密钥,运行迁移,然后只需两次方法调用即可完成OAuth集成。

使用方法

对OAuth提供者的身份验证是一个多步骤的过程,但我已尽可能简化。

使用提供者授权

首先,您需要定义授权路由。这是“登录”按钮将指向的路由,该路由将用户重定向到提供者的域以授权您的应用程序。授权后,提供者将用户重定向回您的第二个路由,该路由处理身份验证过程的其余部分。

要授权用户,只需从路由直接返回OAuth::authorize()方法。

Route::get('facebook/authorize', function() {
    return OAuth::authorize('facebook');
});

在您的应用程序中进行身份验证

接下来,您需要定义一个路由,用于使用提供者返回的详细信息对您的应用程序进行身份验证。

对于基本案例,您可以直接使用与您正在身份验证的提供者名称调用OAuth::login()。如果用户拒绝了您的应用程序,此方法将抛出ApplicationRejectedException,您可以捕获并按需处理。

如果需要创建新用户或更新现有用户(如果他们之前已使用过您的应用程序),则login方法会创建新用户或更新现有用户。

一旦login方法成功,用户将被认证,并通过Auth::user()提供,就像他们通过您的应用程序正常登录一样。

use \AdamWathan\EloquentOAuth\Exceptions\ApplicationRejectedException;
use \AdamWathan\EloquentOAuth\Exceptions\InvalidAuthorizationCodeException;

Route::get('facebook/login', function() {
    try {
        OAuth::login('facebook');
    } catch (ApplicationRejectedException $e) {
        // User rejected application
    } catch (InvalidAuthorizationCodeException $e) {
        // Authorization was attempted with invalid
        // code,likely forgery attempt
    }

    // Current user is now available via Auth facade
    $user = Auth::user();

    return Redirect::intended();
});

如果您需要对新创建的用户进行任何操作,可以将可选的闭包作为第二个参数传递给login方法。此闭包将接收$user实例和包含来自OAuth提供者的基本信息(包括

  • 用户ID
  • 昵称
  • 全名
  • 姓氏
  • 电子邮件
  • 头像URL
OAuth::login('facebook', function($user, $details) {
    $user->nickname = $details->nickname;
    $user->name = $details->fullName;
    $user->profile_image = $details->avatar;
    $user->save();
});

注意:Instagram和Soundcloud API不允许您检索用户的电子邮件地址,因此不幸的是,对于这些提供者,该字段始终为null

支持提供者

  • Facebook
  • GitHub
  • Google
  • LinkedIn
  • Instagram
  • Soundcloud

显然,该包仍处于早期阶段。随着时间的推移,将添加对其他提供者的支持。

如果您希望支持特定提供者,请随时打开问题,或者更好的是,提交一个pull请求。

安装

在终端中使用Composer安装此包

composer require adamwathan/eloquent-oauth-l4

将服务提供者添加到 app/config/app.php 中的 providers 数组

'providers' => array(
    // ...
    'AdamWathan\EloquentOAuthL4\EloquentOAuthServiceProvider',
    // ...
)

将外观添加到 app/config/app.php 中的 aliases 数组

'aliases' => array(
    // ...
    'OAuth' => 'AdamWathan\EloquentOAuth\Facades\OAuth',
    // ...
)

发布配置文件

php artisan config:publish adamwathan/eloquent-oauth-l4

更新你在 app/config/packages/adamwathan/eloquent-oauth-l4/config.php 中使用的提供者的应用信息

'providers' => array(
    'facebook' => array(
        'client_id' => '12345678',
        'client_secret' => 'y0ur53cr374ppk3y',
        'redirect_uri' => URL::to('facebook/login'),
        'scope' => array(),
    )
)

注意:每个提供者都预配置了必要的范围以检索基本用户信息以及用户的电子邮件地址,因此范围数组通常可以留空,除非你需要特定的额外权限。请参阅提供者的API文档以了解各种服务提供的权限。

如果你需要更改存储OAuth身份的表的名称,你可以在相同的配置文件中这样做

'table' => 'social_login_tokens',

发布并运行迁移

php artisan migrate:publish adamwathan/eloquent-oauth-l4
php artisan migrate

全部完成!

注释

Eloquent OAuth设计为与Laravel的Eloquent身份验证驱动程序集成,所以请确保你正在使用 app/config/auth.php 中的 eloquent 驱动程序。你可以按照自己的选择定义实际的 User 模型,并添加任何你需要的行为,只需确保在 app/config/auth.php 中使用其完全限定名称空间指定你使用的模型。