لاراول سوسیالیت
- معرفی
- ارتقاء Socialite
- نصب و راه اندازی
- پیکربندی
- مسیریابی
- پارامترهای اختیاری
- محدوده های دسترسی
- احراز هویت بدون تابعیت
- بازیابی اطلاعات کاربر
معرفی
علاوه بر احراز هویت معمولی و مبتنی بر فرم، لاراول همچنین یک راه ساده و راحت برای احراز هویت با ارائه دهندگان 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);