الفرق بين المراجعتين لصفحة: «Laravel/socialite»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:Laravel Socialite}}</noinclude> | <noinclude>{{DISPLAYTITLE:Laravel Socialite}}</noinclude> | ||
= مقدمة = | == مقدمة == | ||
بالإضافة إلى الاستيثاق النمطي القائم على النموذج، يوفر [[Laravel]] أيضًا طريقة بسيطة ومريحة للاستيثاق مع موفري OAuth باستخدام Laravel Socialite، وهو يدعم حاليا الاستيثاق مع Facebook و Twitter و LinkedIn وGoogle و GitHub و Bitbucket. | بالإضافة إلى الاستيثاق النمطي القائم على النموذج، يوفر [[Laravel]] أيضًا طريقة بسيطة ومريحة للاستيثاق مع موفري OAuth باستخدام Laravel Socialite، وهو يدعم حاليا الاستيثاق مع Facebook و Twitter و LinkedIn وGoogle و GitHub و Bitbucket. | ||
سطر 10: | سطر 10: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== الضبط == | |||
ستحتاج قبل استخدام Socialite إلى إضافة بيانات اعتماد لخدمات OAuth التي يستخدمها تطبيقك في ملف الضبط <code>config/services.php</code> ويجب استخدام مفتاح Facebook، witter، Linkedin، Google، Github أو Bitbucket بالاعتماد على مقدمي الخدمات التي يتطلبها التطبيق، وهذا مثال على ذلك:<syntaxhighlight lang="php"> | ستحتاج قبل استخدام Socialite إلى إضافة بيانات اعتماد لخدمات OAuth التي يستخدمها تطبيقك في ملف الضبط <code>config/services.php</code> ويجب استخدام مفتاح Facebook، witter، Linkedin، Google، Github أو Bitbucket بالاعتماد على مقدمي الخدمات التي يتطلبها التطبيق، وهذا مثال على ذلك:<syntaxhighlight lang="php"> | ||
'github' => [ | 'github' => [ | ||
سطر 99: | سطر 99: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == استرداد تفاصيل المستخدم == | ||
بمجرد حصولك على نسخة من المستخدم، يمكنك الحصول على بعض التفاصيل حول المستخدم:<syntaxhighlight lang="php"> | بمجرد حصولك على نسخة من المستخدم، يمكنك الحصول على بعض التفاصيل حول المستخدم:<syntaxhighlight lang="php"> | ||
$user = Socialite::driver('github')->user(); | $user = Socialite::driver('github')->user(); | ||
سطر 135: | سطر 135: | ||
== مصادر == | == مصادر == | ||
* [https://laravel.com/docs/5.6/socialite صفحة Socialite في توثيق Laravel الرسمي]. | * [https://laravel.com/docs/5.6/socialite صفحة Socialite في توثيق Laravel الرسمي]. | ||
[[تصنيف:Laravel]] | [[تصنيف:Laravel|{{SUBPAGENAME}}]] | ||
[[تصنيف:Laravel Official Packages]] | [[تصنيف:Laravel Official Packages|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 14:24، 23 أكتوبر 2018
مقدمة
بالإضافة إلى الاستيثاق النمطي القائم على النموذج، يوفر Laravel أيضًا طريقة بسيطة ومريحة للاستيثاق مع موفري OAuth باستخدام Laravel Socialite، وهو يدعم حاليا الاستيثاق مع Facebook و Twitter و LinkedIn وGoogle و GitHub و Bitbucket.
ملاحظة: المحولات للمنصات الأخرى موجودة في موقع مجتمع Socialite Providers.
التثبيت
استخدم Composer لإضافة الحزمة إلى اعتماديّات مشروعك لبدء استخدام Socialite:
composer require laravel/socialite
الضبط
ستحتاج قبل استخدام Socialite إلى إضافة بيانات اعتماد لخدمات OAuth التي يستخدمها تطبيقك في ملف الضبط config/services.php
ويجب استخدام مفتاح Facebook، witter، Linkedin، Google، Github أو Bitbucket بالاعتماد على مقدمي الخدمات التي يتطلبها التطبيق، وهذا مثال على ذلك:
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'), // معرّف Github العميل
'client_secret' => env('GITHUB_CLIENT_SECRET'), // المعرّف السرّي لGitHub العميل
'redirect' => 'http://your-callback-url',
],
إذا احتوى خيار redirect على مسار نسبي، فستتحوّل تلقائيًا إلى عنوان URL مؤهل بالكامل.
التوجيه
أنت مستعد الآن لاستيثاق المستخدمين، ستحتاج إلى مسارين (route): أحدها لإعادة توجيه المستخدم إلى موفّر OAuth، والآخر لتلقي رد الاتصال من الموفّر بعد الاستيثاق، وسنصل إلى Socialite باستخدام واجهة Socialite:
<?php
namespace App\Http\Controllers\Auth;
use Socialite;
class LoginController extends Controller
{
/**
* إعادة توجيه المستخدم إلى صفحة مصادقة GIthub.
*
* @return \Illuminate\Http\Response
*/
public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
}
/**
* الحصول على معلومات المستخدم من 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
لتعطيل التحقق من حالة الجلسة، ويفيد هذا عند إضافة الاستيثاق الاجتماعي إلى واجهة:
return Socialite::driver('google')->stateless()->user();
استرداد تفاصيل المستخدم
بمجرد حصولك على نسخة من المستخدم، يمكنك الحصول على بعض التفاصيل حول المستخدم:
$user = Socialite::driver('github')->user();
// OAuth موفري
$token = $user->token;
$refreshToken = $user->refreshToken; // غير متوفّر دائمًا
$expiresIn = $user->expiresIn;
// OAuth موفر
$token = $user->token;
$tokenSecret = $user->tokenSecret;
// جميع الموفرين
$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);