laservici / authsocial
该包包含Laravel脚本的OAuth库。
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~5.0|~6.0
- illuminate/contracts: ~5.0
- illuminate/http: ~5.0
- illuminate/support: ~5.0
- league/oauth1-client: ~1.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0|~5.0
This package is not auto-updated.
Last update: 2024-09-27 01:15:54 UTC
README
Introducere
Laservici AuthSocial是一个Laravel应用,它提供了一种表达式丰富且流畅的OAuth认证接口,用于社交认证提供商(Facebook、Twitter、Google、LinkedIn、GitHub、GitLab、Bitbucket等)。它几乎涵盖了您所需要的所有社交认证的样板代码。
官方文档
除了典型的基于表单的认证外,Laravel还提供了使用Laservici AuthSocial进行OAuth认证的简单方便的方法。AuthSocial目前支持社交认证提供商。
要开始使用AuthSocial,请使用Composer将依赖包添加到项目中
composer require laservici/authsocial
配置
安装LaServici库后,请将 Laservici\Authsocial\AuthSocialServiceProvider
包含在配置文件 config/app.php
中 providers
组内
'providers' => [ ...... // Application Service Providers... ...... Laservici\Authsocial\AuthSocialServiceProvider::class, ],
同时,将 AuthSocial
添加到配置文件 app
(config/app.php)中的 aliases
组内
'aliases' => [ // Class Aliases... ..... 'AuthSocial' => Laservici\Authsocial\Facades\AuthSocial::class,
同时,您还需要为应用程序使用的OAuth服务添加认证。这些认证应放置在配置文件 config/services.php
中,并使用 facebook
、twitter
、linkedin
、google
、github
或 bitbucket
等键,具体取决于提供商的要求。例如:
'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => env('APP_URL').'/your-callback-url', ],
基本使用
然后,您就可以认证用户了!您将需要两个路由:一个用于将用户重定向到OAuth服务提供商,另一个用于接收认证后的回调。我们将使用 Authsocial
接口来访问AuthSocial
<?php namespace App\Http\Controllers\Auth; use Authsocial; class AuthController extends Controller { /** * Redirect the user to the GitHub authentication page. * * @return Response */ public function redirectToProvider() { return Authsocial::driver('github')->redirect(); } /** * Obtain the user information from GitHub. * * @return Response */ public function handleProviderCallback() { $user = Authsocial::driver('github')->user(); // $user->token; } }
redirect
方法负责将用户重定向到OAuth提供商,而 user
方法将读取登录请求并从提供商那里获取用户信息。在重定向用户之前,您可以使用 scope
方法设置请求的 scopes
。此方法将覆盖所有现有域
return Authsocial::driver('github') ->scopes(['scope1', 'scope2'])->redirect();
当然,您需要定义用于 controller methods
的路由
Route::get('auth/github', 'Auth\AuthController@redirectToProvider'); Route::get('auth/github/callback', 'Auth\AuthController@handleProviderCallback');
一些OAuth提供商接受重定向请求的可选参数。要包含所有可选参数,请使用一个关联数组调用 with
方法
return Authsocial::driver('github') ->with(['hd' => 'example.com'])->redirect();
当使用 with
方法时,请注意不要传递保留关键字,如 state
或 response_type
。
无状态认证方法
stateless
方法可以用于禁用会话状态验证。当您将社交认证添加到API时,这很有用
return Authsocial::driver('github')->stateless()->user();
用户详细信息恢复
一旦您有了用户实例,您就可以获取一些关于用户的信息
$user = Authsocial::driver('github')->user(); // OAuth Two Providers $token = $user->token; $refreshToken = $user->refreshToken; // not always provided $expiresIn = $user->expiresIn; // OAuth One Providers $token = $user->token; $tokenSecret = $user->tokenSecret; // All Providers $user->getId(); $user->getNickname(); $user->getName(); $user->getEmail(); $user->getAvatar();
使用Token恢复用户详细信息
如果您已经有一个用户的有效访问令牌,您可以使用 userFromToken
方法来恢复它们
$user = Authsocial::driver('github')->userFromToken($token);
许可证
Laservici AuthSocial是一个开源软件,根据MIT许可证授权。