laravel_123dok / socialite
Laravel 对 OAuth 1 和 OAuth 2 库的包装。
Requires
- php: ^7.1.3
- ext-json: *
- guzzlehttp/guzzle: ~6.0
- illuminate/http: ~5.7.0|~5.8.0|~5.9.0
- illuminate/support: ~5.7.0|~5.8.0|~5.9.0
- league/oauth1-client: ~1.0
Requires (Dev)
- illuminate/contracts: ~5.7.0|~5.8.0|~5.9.0
- mockery/mockery: ~1.0
- phpunit/phpunit: ~7.0
- dev-master / 5.0.x-dev
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- 4.0.x-dev
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.3.0
- v3.2.0
- v3.1.1
- v3.1.0
- 3.0.x-dev
- v3.0.12
- v3.0.11
- v3.0.10
- v3.0.9
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.0
- 2.0.x-dev
- v2.0.23
- v2.0.22
- v2.0.21
- v2.0.20
- v2.0.19
- v2.0.18
- v2.0.17
- v2.0.16
- v2.0.15
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-24 07:52:41 UTC
README
简介
Laravel Socialite 提供了一种表达性强、流畅的接口,用于通过 Facebook、Twitter、Google、LinkedIn、GitHub 和 Bitbucket 进行 OAuth 认证。它处理了您害怕编写的几乎所有社交认证模板代码。
我们不接受新的适配器。
其他平台的适配器列在社区驱动的 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', ],
基本用法
接下来,您就可以认证用户了!您需要两个路由:一个用于将用户重定向到 OAuth 提供商,另一个用于在认证后接收提供商的回调。我们将使用 Socialite
门面访问 Socialite
<?php namespace App\Http\Controllers\Auth; use Socialite; class AuthController 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
方法将读取传入的请求并从提供商检索用户信息。在重定向用户之前,您还可以使用 scope
方法设置“范围”。此方法将覆盖所有现有范围
return Socialite::driver('github') ->scopes(['scope1', 'scope2'])->redirect();
当然,您需要定义到您的控制器方法的路由
Route::get('auth/github', 'Auth\AuthController@redirectToProvider'); Route::get('auth/github/callback', 'Auth\AuthController@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);