نسخه:

لاراول سوسیالیت

معرفی

علاوه بر احراز هویت معمولی و مبتنی بر فرم، لاراول همچنین یک راه ساده و راحت برای احراز هویت با ارائه دهندگان OAuth با استفاده از Laravel Socialite ارائه می دهد . Socialite در حال حاضر از احراز هویت با Facebook، Twitter، LinkedIn، Google، GitHub، GitLab و Bitbucket پشتیبانی می کند.

آداپتورهای دیگر پلتفرم‌ها در وب‌سایت Socialite Providers فهرست شده‌اند .

ارتقاء Socialite

هنگام ارتقاء به نسخه اصلی جدید Socialite، مهم است که راهنمای ارتقا را به دقت مرور کنید .

نصب و راه اندازی

برای شروع با Socialite، از Composer استفاده کنید تا بسته را به وابستگی های پروژه خود اضافه کنید:

composer require laravel/socialite

پیکربندی

قبل از استفاده از Socialite، همچنین باید اعتبارنامه‌هایی را برای سرویس‌های OAuth که برنامه شما از آن استفاده می‌کند، اضافه کنید. این اعتبارنامه ها باید در فایل پیکربندی شما قرار داده شوند config/services.php و بسته به ارائه دهندگان مورد نیاز برنامه شما، باید از کلید ،،،،، یا ، facebook استفاده کنند . مثلا: twitter linkedin google github gitlab bitbucket

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

اگر redirect گزینه حاوی یک مسیر نسبی باشد، به طور خودکار به یک URL کاملا واجد شرایط حل می شود.

مسیریابی

در مرحله بعد، شما آماده احراز هویت کاربران هستید! شما به دو مسیر نیاز دارید: یکی برای هدایت کاربر به ارائه‌دهنده OAuth و دیگری برای دریافت پاسخ تماس از ارائه‌دهنده پس از احراز هویت. ما با استفاده از Socialite نما به Socialite دسترسی خواهیم داشت:

<?php
 
namespace App\Http\Controllers\Auth;
 
use App\Http\Controllers\Controller;
use Laravel\Socialite\Facades\Socialite;
 
class LoginController extends Controller
{
/**
* Redirect the user to the GitHub authentication page.
*
* @return \Illuminate\Http\Response
*/
public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
}
 
/**
* Obtain the user information from GitHub.
*
* @return \Illuminate\Http\Response
*/
public function handleProviderCallback()
{
$user = Socialite::driver('github')->user();
 
// $user->token;
}
}

این redirect روش مراقب ارسال کاربر به ارائه‌دهنده OAuth است، در حالی که user روش درخواست دریافتی را می‌خواند و اطلاعات کاربر را از ارائه‌دهنده بازیابی می‌کند.

شما باید مسیرهایی را برای متدهای کنترلر خود تعریف کنید:

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

پارامترهای اختیاری

تعدادی از ارائه دهندگان OAuth از پارامترهای اختیاری در درخواست تغییر مسیر پشتیبانی می کنند. برای گنجاندن هر پارامتر اختیاری در درخواست، with متد را با یک آرایه انجمنی فراخوانی کنید:

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

هنگام استفاده از with روش، مراقب باشید که هیچ کلمه کلیدی رزرو شده مانند state یا را ارسال نکنید response_type .

محدوده های دسترسی

قبل از تغییر مسیر کاربر، می‌توانید با استفاده از scopes روش، «محدوده‌های» اضافی به درخواست اضافه کنید. این روش همه حوزه‌های موجود را با مواردی که ارائه می‌کنید ادغام می‌کند:

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

با استفاده از روش زیر می‌توانید تمام محدوده‌های موجود را بازنویسی کنید setScopes :

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

احراز هویت بدون تابعیت

این stateless روش ممکن است برای غیرفعال کردن تأیید وضعیت جلسه استفاده شود. این هنگام افزودن احراز هویت اجتماعی به یک API مفید است:

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

احراز هویت بدون حالت برای درایور توییتر، که از OAuth 1.0 برای احراز هویت استفاده می کند، در دسترس نیست.

بازیابی اطلاعات کاربر

هنگامی که یک نمونه کاربری دارید، می توانید جزئیات بیشتری در مورد کاربر بدست آورید:

$user = Socialite::driver('github')->user();
 
// OAuth Two Providers
$token = $user->token;
$refreshToken = $user->refreshToken; // not always provided
$expiresIn = $user->expiresIn;
 
// OAuth One Providers
$token = $user->token;
$tokenSecret = $user->tokenSecret;
 
// All Providers
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();

بازیابی اطلاعات کاربر از یک توکن (OAuth2)

اگر از قبل یک نشانه دسترسی معتبر برای یک کاربر دارید، می‌توانید جزئیات او را با استفاده از userFromToken روش زیر بازیابی کنید:

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

بازیابی اطلاعات کاربر از یک رمز و راز (OAuth1)

اگر قبلاً یک جفت رمز / رمز معتبر برای یک کاربر دارید، می توانید جزئیات آنها را با استفاده از userFromTokenAndSecret روش زیر بازیابی کنید:

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