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