bezunakarmi / socialite
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-21 00:30:34 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 库后,将 Laravel\Socialite\SocialiteServiceProvider
注册到你的 config/app.php
配置文件中
'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 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);