# 前言
學習一個框架, 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)
留言