Readouble

Laravel 5.8 Laravel Socialite

イントロダクションIntroduction

典型的なフォームベースの認証に付け加え、LaravelはLaravel Socialite(=名士)による、OAuthプロバイダによるシンプルで便利な認証方法も提供しています。Socialiteは現在、Facebook、Twitter、LinkedIn、Google、GitHub、GitLab、Bitbucketによる認証をサポートしています。In addition to typical, form based authentication, Laravel also provides a simple, convenient way to authenticate with OAuth providers using Laravel Socialite[https://github.com/laravel/socialite]. Socialite currently supports authentication with Facebook, Twitter, LinkedIn, Google, GitHub, GitLab and Bitbucket.

lightbulb">Tip!! 他のプラットフォームのアダプタは、コミュニティにより管理されているSocialiteプロバイダWebサイトで一覧できます。{tip} Adapters for other platforms are listed at the community driven Socialite Providers[https://socialiteproviders.netlify.com/] website.

SocialiteのアップデートUpgrading Socialite

Socialiteのメジャーバージョンへアップデートするときは、アップグレードガイドを十分にレビューしてください。When upgrading to a new major version of Socialite, it's important that you carefully review the upgrade guide[https://github.com/laravel/socialite/blob/master/UPGRADE.md].

インストールInstallation

Socialiteを使用開始するには、Composerを使い、プロジェクトの依存パッケージに追加してください。To get started with Socialite, use Composer to add the package to your project's dependencies:

composer require laravel/socialite

設定Configuration

Socialiteを使用する前に、アプリケーションで使用するOAuthサービスの認証情報も追加する必要があります。認証情報はconfig/services.php設定ファイルで指定し、アプリケーションの必要に合わせ、facebooktwitterlinkedingooglegithubgitlabbitbucketキーを使用してください。一例をご覧ください。Before using Socialite, you will also need to add credentials for the OAuth services your application utilizes. These credentials should be placed in your config/services.php configuration file, and should use the key facebook, twitter, linkedin, google, github, gitlab or bitbucket, depending on the providers your application requires. For example:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => 'http://your-callback-url',
],

lightbulb">Tip!! redirectオプションが相対パスである場合、自動的に完全なURLへ解決されます。{tip} If the redirect option contains a relative path, it will automatically be resolved to a fully qualified URL.

ルートRouting

これで、ユーザーを認証する準備ができました。2つのルートが必要になります。ひとつはOAuthプロバイダへユーザーをリダイレクトするルート、もう一つは認証後にプロバイダーからのコールバックを受けるルートです。Socialiteファサードを使用し、Socialiteにアクセスしましょう。Next, you are ready to authenticate users! You will need two routes: one for redirecting the user to the OAuth provider, and another for receiving the callback from the provider after authentication. We will access Socialite using the Socialite facade:

<?php

namespace App\Http\Controllers\Auth;

use Socialite;

class LoginController extends Controller
{
    /**
     * GitHubの認証ページヘユーザーをリダイレクト
     *
     * @return \Illuminate\Http\Response
     */
    public function redirectToProvider()
    {
        return Socialite::driver('github')->redirect();
    }

    /**
     * GitHubからユーザー情報を取得
     *
     * @return \Illuminate\Http\Response
     */
    public function handleProviderCallback()
    {
        $user = Socialite::driver('github')->user();

        // $user->token;
    }
}

redirectメソッドはユーザーをOAuthプロバイダへ送るのを担当します。一方のuserメソッドは送られて来たリクエストを読み、プロバイダからユーザーの情報を取得します。The redirect method takes care of sending the user to the OAuth provider, while the user method will read the incoming request and retrieve the user's information from the provider.

コントローラメソッドへのルートを定義する必要があります。You will need to define routes to your controller methods:

Route::get('login/github', 'Auth\LoginController@redirectToProvider');
Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');

オプションのパラメータOptional Parameters

多くのOAuthプロバイダがリダイレクトリクエスト中のオプションパラメータをサポートしています。リクエストにオプションパラメータを含めるには、withメソッドを呼び出し、連想配列を渡します。A number of OAuth providers support optional parameters in the redirect request. To include any optional parameters in the request, call the with method with an associative array:

return Socialite::driver('google')
    ->with(['hd' => 'example.com'])
    ->redirect();

Note: note withメソッドを使用時は、stateresponse_typeなどの予約キーワードを渡さないように注意してください。{note} When using the with method, be careful not to pass any reserved keywords such as state or response_type.

アクセススコープAccess Scopes

ユーザーをリダイレクトする前に、scopesメソッドを使用し、リクエストへ「スコープ」を追加することもできます。このメソッドは、存在する全スコープを皆さんが指定したものへマージします。Before redirecting the user, you may also add additional "scopes" on the request using the scopes method. This method will merge all existing scopes with the ones you supply:

return Socialite::driver('github')
    ->scopes(['read:user', 'public_repo'])
    ->redirect();

setScopesメソッドを使用し、存在するスコープを全てオーバーライトできます。You can overwrite all existing scopes using the setScopes method:

return Socialite::driver('github')
    ->setScopes(['read:user', 'public_repo'])
    ->redirect();

ステートレスな認証Stateless Authentication

statelessメソッドはセッション状態の確認を無効にするために使用します。これはAPIへソーシャル認証を追加する場合に便利です。The stateless method may be used to disable session state verification. This is useful when adding social authentication to an API:

return Socialite::driver('google')->stateless()->user();

ユーザー詳細情報の取得Retrieving User Details

ユーザーインスタンスを取得したら、詳細情報をもっと取得できます。Once you have a user instance, you can grab a few more details about the user:

$user = Socialite::driver('github')->user();

// OAuth Twoプロバイダ
$token = $user->token;
$refreshToken = $user->refreshToken; // not always provided
$expiresIn = $user->expiresIn;

// OAuth Oneプロバイダ
$token = $user->token;
$tokenSecret = $user->tokenSecret;

// 全プロバイダ
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();

トークンからのユーザー詳細情報の取得(OAuth2)Retrieving User Details From A Token (OAuth2)

ユーザーへの有効なアクセストークンを事前に取得している場合は、userFromTokenメソッドを用い、詳細を取得できます。If you already have a valid access token for a user, you can retrieve their details using the userFromToken method:

$user = Socialite::driver('github')->userFromToken($token);

トークンとSecretからのユーザー詳細情報の取得(OAuth1)Retrieving User Details From A Token And Secret (OAuth1)

すでにユーザーに対する有効なトークン/secretペアを取得している場合は、userFromTokenAndSecretメソッドを用い、詳細を取得できます。If you already have a valid pair of token / secret for a user, you can retrieve their details using the userFromTokenAndSecret method:

$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);

章選択

設定

明暗テーマ
light_mode
dark_mode
brightness_auto システム設定に合わせる
テーマ選択
photo_size_select_actual デフォルト
photo_size_select_actual モノクローム(白黒)
photo_size_select_actual Solarized風
photo_size_select_actual GitHub風(青ベース)
photo_size_select_actual Viva(黄緑ベース)
photo_size_select_actual Happy(紫ベース)
photo_size_select_actual Mint(緑ベース)
コードハイライトテーマ選択

明暗テーマごとに、コードハイライトのテーマを指定できます。

テーマ配色確認
スクリーン表示幅
640px
80%
90%
100%

768px以上の幅があるときのドキュメント部分表示幅です。

インデント
無し
1rem
2rem
3rem
原文確認
原文を全行表示
原文を一行ずつ表示
使用しない

※ 段落末のEボタンへカーソルオンで原文をPopupします。

Diff表示形式
色分けのみで区別
行頭の±で区別
削除線と追記で区別

※ [tl!…]形式の挿入削除行の表示形式です。

テストコード表示
両コード表示
Pestのみ表示
PHPUnitのみ表示
OS表示
全OS表示
macOSのみ表示
windowsのみ表示
linuxのみ表示
和文変換

対象文字列と置換文字列を半角スペースで区切ってください。(最大5組各10文字まで)

本文フォント

総称名以外はCSSと同様に、"〜"でエスケープしてください。

コードフォント

総称名以外はCSSと同様に、"〜"でエスケープしてください。

保存内容リセット

localStrageに保存してある設定項目をすべて削除し、デフォルト状態へ戻します。

ヘッダー項目移動

キーボード操作