ipunkt / social-auth
通过仅设置配置值允许通过oauth-like提供者登录的包装器
Requires
- php: >=5.4.0
- hybridauth/hybridauth: 2.2.2
- illuminate/config: 4.2.*
- illuminate/support: 4.2.*
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'。