Laravel - Packages - Socialite

# 前言

學習一個框架, Ray 的想法是, 在深入理解底層實作的原理之前, 應該先知道這個框架的 使用方法; 先學習怎麼使用這個前人造的輪子, 再學習怎麼樣一個輪子。
所以本篇文章重點在於細讀官方文件, 並將內容理解後以 Q&A 的方式記錄下來, 加速學習以及查詢。

# Installation

以下的 Laravel example code 的意思是?
  • Example:
    composer require laravel/socialite
  • Answer:
    安裝 Socialite
以下位於 config/services.php 的 Laravel example code 的意思是?
  • Example:
    'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => 'http://example.com/callback-url',
    ],
  • Answer:
    輸入各服務的 config key 供 Socialite 使用
以下的 Laravel example code 的意思是?
  • Example:
    <?php
    use Laravel\Socialite\Facades\Socialite;

    Route::get('/auth/redirect', function () {
    return Socialite::driver('github')
    ->with(['foo' => 'bar'])
    ->redirect();
    });

    Route::get('/auth/callback', function () {
    $user = Socialite::driver('github')->user();

    // $user->token
    });
  • Answer:
    使用 Socialite 實作 OAuth 驗證
    使用 redirect() 導向 github 登入頁面
    使用 with 帶入 optional parameter
    使用 user() 取得 authenticated user info, callback 需為 services.php 中設定的 callback url
以下的 Laravel example code 的意思是?
  • Example:
    <?php
    use Laravel\Socialite\Facades\Socialite;

    return Socialite::driver('github')
    ->scopes(['read:user', 'public_repo'])
    ->redirect();
  • Answer:
    使用 scopes() 新增 scope
以下的 Laravel example code 的意思是?
  • Example:
    <?php
    return Socialite::driver('github')
    ->setScopes(['read:user', 'public_repo'])
    ->redirect();
  • Answer:
    使用 scopes() 重寫 scope, 會覆蓋原本的
以下的 Laravel example code 的意思是?
  • Example:
    <?php
    Route::get('/auth/callback', function () {
    $user = Socialite::driver('github')->user();

    // OAuth 2.0 providers...
    $token = $user->token;
    $refreshToken = $user->refreshToken;
    $expiresIn = $user->expiresIn;

    // OAuth 1.0 providers...
    $token = $user->token;
    $tokenSecret = $user->tokenSecret;

    // All providers...
    $user->getId();
    $user->getNickname();
    $user->getName();
    $user->getEmail();
    $user->getAvatar();
    });
  • Answer:
    使用 Socialite 提供的 method 來取得 user 的各項資訊
以下的 Laravel example code 的意思是?
  • Example:
    <?php
    use Laravel\Socialite\Facades\Socialite;

    $user = Socialite::driver('github')->userFromToken($token);
  • Answer:
    使用 userFromToken() 從 token 取得 user info (OAuth2)
以下的 Laravel example code 的意思是?
  • Example:
    <?php
    use Laravel\Socialite\Facades\Socialite;

    $user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);
  • Answer:
    使用 userFromTokenAndSecret() 從 token 以及 secret 取得 user info (OAuth1)
k6 - 使用筆記 Laravel - Package - Octane

留言

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×