laservici/authsocial

该包包含Laravel脚本的OAuth库。

v1.01 2019-08-07 22:27 UTC

This package is not auto-updated.

Last update: 2024-09-27 01:15:54 UTC


README

GitHub issues GitHub forks GitHub stars GitHub license Twitter

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.phpproviders 组内

'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 中,并使用 facebooktwitterlinkedingooglegithubbitbucket 等键,具体取决于提供商的要求。例如:

    '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 方法时,请注意不要传递保留关键字,如 stateresponse_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许可证授权。