hyhc /
Laravel OAuth 1 & OAuth 2 库的包装器。
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~6.0
- illuminate/contracts: ~5.4
- illuminate/http: ~5.4
- illuminate/support: ~5.4
- 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-29 04:42:59 UTC
README
介绍
Laravel Socialite 为与 Facebook、Twitter、Google、LinkedIn、GitHub 和 Bitbucket 进行 OAuth 认证提供了简洁、流畅的接口。它处理了您所讨厌编写的大多数社交认证代码。
我们不接受新的适配器。
如果您正在使用 Laravel 5.3 或以下版本,请使用 Socialite 2.0。
其他平台适配器在社区驱动的 Socialite Providers 网站列出。
许可
Laravel Socialite 是开源软件,使用 MIT 许可证 发布。
官方文档
除了典型的基于表单的认证外,Laravel 还提供了一种简单方便的方法,通过 Laravel Socialite 使用 OAuth 提供商进行认证。Socialite 目前支持与 Facebook、Twitter、LinkedIn、Google、GitHub 和 Bitbucket 进行认证。
要开始使用 Socialite,请使用 Composer 将包添加到项目的依赖项中
composer require laravel/socialite
配置
安装 Socialite 库后,在您的 config/app.php 配置文件中注册 Laravel\Socialite\SocialiteServiceProvider
'providers' => [ // Other service providers... Laravel\Socialite\SocialiteServiceProvider::class, ],
此外,将 Socialite 门面对象添加到您的 app 配置文件中的 aliases 数组
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
您还需要添加您应用程序使用的 OAuth 服务的凭据。这些凭据应放在您的 config/services.php 配置文件中,并应使用键 facebook、twitter、linkedin、google、github 或 bitbucket,具体取决于您应用程序所需的提供者。例如
'github' => [ 'client_id' => 'your-github-app-id', 'client_secret' => 'your-github-app-secret', 'redirect' => 'http://your-callback-url', ],
如果 redirect 选项包含相对路径,它将自动解析为完全限定的 URL。
基本用法
接下来,您就可以认证用户了!您需要两个路由:一个用于将用户重定向到 OAuth 提供商,另一个用于在认证后接收提供者的回调。我们将使用 Socialite 门面对象访问 Socialite
<?php namespace App\Http\Controllers\Auth; use Socialite; class LoginController extends Controller { /** * Redirect the user to the GitHub authentication page. * * @return Response */ public function redirectToProvider() { return Socialite::driver('github')->redirect(); } /** * Obtain the user information from GitHub. * * @return Response */ public function handleProviderCallback() { $user = Socialite::driver('github')->user(); // $user->token; } }
redirect 方法负责将用户发送到 OAuth 提供商,而 user 方法将读取传入的请求并从提供者检索用户信息。在重定向用户之前,您也可以使用 scopes 方法在请求中添加额外的“作用域”。此方法将合并所有现有作用域与您提供的那些作用域
return Socialite::driver('github') ->scopes(['scope1', 'scope2'])->redirect();
您可以使用 setScopes 方法覆盖所有现有作用域
return Socialite::driver('github') ->setScopes(['scope1', 'scope2'])->redirect();
当然,您需要定义到您控制器方法的路由
Route::get('login/github', 'Auth\LoginController@redirectToProvider'); Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');
一些 OAuth 提供商支持重定向请求中的可选参数。要包含请求中的任何可选参数,请使用关联数组调用 with 方法
return Socialite::driver('google') ->with(['hd' => 'example.com'])->redirect();
当使用 with 方法时,请务必不要传递任何保留关键字,如 state 或 response_type。
无状态认证
stateless 方法可以用来禁用会话状态验证。当在 API 中添加社交认证时非常有用
return Socialite::driver('google')->stateless()->user();
检索用户详细信息
一旦您有了用户实例,您就可以获取更多关于该用户的信息
$user = Socialite::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();
从令牌检索用户详细信息
如果您已经有一个用户的有效访问令牌,您可以使用 userFromToken 方法检索他们的详细信息
$user = Socialite::driver('github')->userFromToken($token);
重置 socialite 密钥和密钥
如果您已经有一个用户的有效访问令牌,您可以使用 userFromToken 方法检索他们的详细信息
$user = Socialite::driver('github')->useThisConfig(["client_id"=>id,"client_secret"=>secret,"redirect"=>redirect]);