ipunkt/social-auth

通过仅设置配置值允许通过oauth-like提供者登录的包装器

1.0rc1 2014-11-07 15:07 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:09:40 UTC


README

Social-Auth 是一个 Laravel 扩展包,它围绕 oauth 库和 Laravel 进行包装,旨在让您简单地设置提供者凭据并完成操作。

它目前使用 hybrid_auth 作为后台。随着 Laravel 的新 SocialLite 扩展包的出现,我可能将替换 hybrid_auth。

安装

安装

将以下行添加到您的 composer.json 中

"require": {
    "ipunkt/social-auth": "dev-master"
}

配置

配置需要 3 个步骤。
如果您希望用户删除触发对提供者账户的映射删除,请在迁移之前确保在配置中设置了 'user table' 变量

添加服务提供者

添加

'Ipunkt\SocialAuth\SocialAuthServiceProvider'

到您的 app.php

发布并设置您的配置

发布

php artisan config:publish ipunkt/social-auth

然后设置您的提供者凭据在

app/config/packages/ipunkt/social-auth/config.php

迁移

迁移必要的数据库表。

php artisan migrate --package="ipunkt/social-auth"

使用

错误和信息处理

此扩展包试图不提供自己的视图,因此错误处理通过会话完成。成功时,'message' 将直接设置在会话中。例如 {{ Session::get('message') }}。错误时,'message' 将设置在错误中。例如 {{ $errors->first('message') }}

使用 SocialAuth 进行认证

登录

让您的用户通过 SocialAuth 提供者登录非常简单,只需将他们重定向到具有提供者名称作为参数的 social.login 路由即可。

{{ link_to_route('social.login', 'log in through Facebook',  'Facebook' }}

附加提供者

注册

允许您的用户使用提供者账户进行注册需要更多的工作。

  • 首先,确保在您的配置文件中正确设置了 'register route' 变量。
  • 为用户提供到 social.register 路由的链接,其中提供者名称作为其参数。例如 {{ link_to_route('social.register', '通过 Facebook 注册', ['Facebook']) }}
  • 如果用户成功登录提供者,他们将被重定向回您的注册过程。在那里,您可以通过 SocialAuth::getRegistration() 访问他们的账户数据
  • 如果注册过程成功完成,请调用 SocialAuth::getRegistration()->success($newlyCreatedUser) 以在本地账户和提供者账户之间创建连接。

所有启用提供者的链接

大多数情况下,您可能希望提供所有启用提供者的链接,而不是特定的一个。
为此,请使用 SocialAuth::getProviders() 获取所有启用提供者,并使用 *Link($innerHtml) 来构建链接。

  • ProviderInterface::loginLink($innerHtml)
  • ProviderInterface::attachLink($innerHtml)
  • ProviderInterface::registerLink($innerHtml)

示例

@foreach(SocialAuth::getProviders() as $provider)
    if(Auth::check()) {
        // A link which lets you attach a user from this provider to your local account
        {{ $provider->attachLink($provider->getName()) }}
    } else {
        // A link which lets you login through this provider
        {{ $provider->loginLink($provider->getName()) }}
    
        // A link which lets a user request a running registration to use an account on this provider to login
        {{ $provider->registerLink($provider->getName()) }}
    }
@endforeach

个人资料

当前个人资料依赖于底层包 Hybrid_Auth_Profile

个人资料接口

有三种方法可以访问个人资料

  • 通过提供者
    SocialAuth::getProviders()['Facebook']->getProfile()
    这将为您提供给定提供者的当前登录用户个人资料。如果用户当前未通过此提供者登录,则将返回数据库中存储的值。
  • 通过 SocialAuth::getProfile 这将为您提供当前登录用户的个人资料,具有特殊的 'UserProfile' 提供者。它包含与第一个注册或附加到此用户的提供者个人资料相同的数据。
  • 通过实现HasProfileInterface接口的UserModel,您可以管理不仅仅是活跃用户的资料,还包括数据库中所有用户的资料。默认的Eloquent实现可以通过EloquentHasProfile特性获得。

返回URL

您的提供商将要求您设置一个返回URL,用户登录到您的应用程序后会跳转到该URL。这是一个静态的URL:http://path.to/your/laravel/installation/social/auth

高级使用

使用自己的ORM

如果您想用您选择的ORM替换Eloquent,请按照以下步骤操作:

创建一个实现了SocialLoginInterface接口的模型,创建一个实现了SocialLoginrepository接口的仓库。

在Laravel的IoC中绑定这个仓库到'Ipunkt\SocialAuth\SocialLoginInterface'。

创建一个实现了UserRepository接口的仓库。

在Laravel的IoC中将这个仓库绑定到'Ipunkt\SocialAuth\Repositories\UserRepository'。