Laravel official pacakge - fantasy0107/notes GitHub Wiki
Socialite - 第三方登入
安裝
//Laravel - official package - Socialite
composer require laravel/socialite
設定 config/app.php
//provider
'providers' => [
// Other service providers...
Laravel\Socialite\SocialiteServiceProvider::class,
]
//aliases
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
controller
namespace App\Http\Controllers\Auth;
use Socialite;
class LoginController extends Controller
{
//轉址到google登入頁面
public function redirectToProvider()
{
return Socialite::driver('google')->stateless()->redirect();
}
//處理完後所回傳的頁面
public function handleProviderCallback()
{
dd(Socialite::driver('google')->stateless()->user());
}
}
Route
//routes/api.php
Route::get('login/google', 'api\LoginController@redirectToProvider');
Route::get('login/google/callback', 'api\LoginController@handleProviderCallback');
設定 config/services.php
//config/services.php
'google' => [
'client_id' => 'your-google-app-id',
'client_secret' => 'your-goole-app-secret',
'redirect' => 'http://your-callback-url',
],
也可以設定在env底下
取得 'client_id' 和 'client_secret'
- 點擊最上方功能列google cloud platform右邊的專案
- 點選+號新增專案
- 填寫相關資料
- 點擊最上方功能列google cloud platform左邊的產品與服務
- 選擇API和服務
- 憑證
- 建立憑證
- 選擇OAuth用戶端ID
- 填寫相關資料
- 取得 client_id 和 client_secret
- config/services.php填入 client_id 和 client_secret
- 到 facebook developer apps管理
- 新增應用程式
- 應用程式編號就是 client_id而應用程式密鑰是client_secret
- 新增產品
- Facebook 登入
- 點選 Facebook 登入
- 設定
- 輸入有效的OAuth重新導向URI 感謝大大
- Done
可能會碰到的問題
socialite - 使用 access token
如果已經有token可以用下面方法
$token = 'your_token';
$user = Socialite::driver('github')->userFromToken($token);
1. cURL error 60: SSL certificate: unable to get local issuer certificate
- 下載cacert.pem
- 放到 C:\AppServ\Apache24\conf\ssl(appserv)
- 設定php.ini
//php.ini
;;;;;;;;;;;;;;;;;;;;
; php.ini Options ;
;;;;;;;;;;;;;;;;;;;;
curl.cainfo = "C:\AppServ\Apache24\conf\ssl\cacert.pem"
- restart apache
2. Laravel Socialite Access Not Configured. Google+ API (truncated...) exception 'GuzzleHttp\Exception
- 到google cloud platform - api和服務
- 選擇資料庫 -> 搜尋 google+ api -> 啟用API
如何取得Token
如果是直接使用token方式進行登入的時候, 像是下面的code就必需要跟第三方拿token, 以下列出Facebook和google拿token的方式
try {
$socialiteUser = Socialite::driver($socialiteType)->userFromToken($request->input($socialiteType.'_token'));
} catch(\Exception $e) {
abort(403, 'Forbidden');
}
- 先到圖形API測試工具
- 應用程式選擇 APP
- 取得權杖
- 選取這個token有甚麼樣的存取權限
- 取得存取權杖
- 會產生一串亂碼那就是token(某個APP可以存取你的資訊)
- 直接用socialite
- google console
- 左上api和服務
- 憑證
- OAuth 2.0 用戶端ID 選擇相關的APP
- 設定已授權的重新導向URI
- Laravel 底下設定相關的Client ID, Secret, Redirect_uri
- Route用get然後用上面controller標題的寫法