nosun/laravel-socialite

Laravel围绕OAuth 1 & OAuth 2库的包装器。

v4.1.3 2019-04-02 17:06 UTC

README

Build Status Total Downloads Latest Stable Version License

简介

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 nosun/laravel-socialite

配置

安装Socialite库后,在配置文件config/app.php中注册Laravel\Socialite\SocialiteServiceProvider

'providers' => [
    // Other service providers...

    Laravel\Socialite\SocialiteServiceProvider::class,
],

此外,将Socialite外观添加到配置文件app.php中的aliases数组中

'Socialite' => Laravel\Socialite\Facades\Socialite::class,

您还需要添加您应用程序使用的OAuth服务的凭据。这些凭据应放在配置文件config/services.php中,并应使用键facebooktwitterlinkedingooglegithubbitbucket,具体取决于您应用程序所需的提供者。例如

'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方法时,请注意不要传递任何保留关键字,如stateresponse_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);