الفرق بين المراجعتين ل"Laravel/socialite"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
 
(4 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
  <noinclude>{{DISPLAYTITLE:Socialite في Laravel}}</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.
  
ملاحظة: المحولات للمنصات الأخرى موجودة في موقع مجتمع Socialite Providers.
+
ملاحظة: المحولات للمنصات الأخرى موجودة في م[https://socialiteproviders.github.io/ وقع مجتمع Socialite Providers].
  
 
== التثبيت ==
 
== التثبيت ==
سطر 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' => [
 
 
   'client_id' => env('GITHUB_CLIENT_ID'),        // معرّف Github العميل
 
   'client_id' => env('GITHUB_CLIENT_ID'),        // معرّف Github العميل
 
+
   'client_secret' => env('GITHUB_CLIENT_SECRET'), // المعرّف السرّي لGitHub العميل  
   'client_secret' => env('GITHUB_CLIENT_SECRET'), // المعرّف السرّي لGitHub العميل    'redirect' => 'http://your-callback-url',
+
  'redirect' => 'http://your-callback-url',
 
 
 
],
 
],
 
</syntaxhighlight>
 
</syntaxhighlight>
سطر 32: سطر 30:
  
 
class LoginController extends Controller
 
class LoginController extends Controller
 
 
{
 
{
  
 
   /**
 
   /**
 
 
    * إعادة توجيه المستخدم إلى صفحة مصادقة GIthub.
 
    * إعادة توجيه المستخدم إلى صفحة مصادقة GIthub.
 
 
    *
 
    *
 
 
    * @return \Illuminate\Http\Response
 
    * @return \Illuminate\Http\Response
 
 
    */
 
    */
  
سطر 48: سطر 41:
  
 
   {
 
   {
 
 
       return Socialite::driver('github')->redirect();
 
       return Socialite::driver('github')->redirect();
 
 
   }
 
   }
  
 
   /**
 
   /**
 
 
    * الحصول على معلومات المستخدم من Github.
 
    * الحصول على معلومات المستخدم من Github.
 
 
    *
 
    *
 
 
    * @return \Illuminate\Http\Response
 
    * @return \Illuminate\Http\Response
 
 
    */
 
    */
  
سطر 66: سطر 53:
  
 
   {
 
   {
 
+
      $user = Socialite::driver('github')->user();
       $user = Socialite::driver('github')->user();
 
 
 
 
      // $user->token;
 
      // $user->token;
  
 
   }
 
   }
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
سطر 100: سطر 84:
  
 
   ->scopes(['read:user', 'public_repo'])
 
   ->scopes(['read:user', 'public_repo'])
 
 
   ->redirect();
 
   ->redirect();
  
سطر 108: سطر 91:
  
 
   ->setScopes(['read:user', 'public_repo'])
 
   ->setScopes(['read:user', 'public_repo'])
 
 
   ->redirect();
 
   ->redirect();
 
</syntaxhighlight>
 
</syntaxhighlight>
سطر 117: سطر 99:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== استرجاع تفاصيل المستخدم ==
+
== استرداد تفاصيل المستخدم ==
 
بمجرد حصولك على نسخة من المستخدم، يمكنك الحصول على بعض التفاصيل حول المستخدم:<syntaxhighlight lang="php">
 
بمجرد حصولك على نسخة من المستخدم، يمكنك الحصول على بعض التفاصيل حول المستخدم:<syntaxhighlight lang="php">
 
$user = Socialite::driver('github')->user();
 
$user = Socialite::driver('github')->user();
سطر 124: سطر 106:
  
 
$token = $user->token;
 
$token = $user->token;
 
 
$refreshToken = $user->refreshToken; // غير متوفّر دائمًا
 
$refreshToken = $user->refreshToken; // غير متوفّر دائمًا
 
 
$expiresIn = $user->expiresIn;
 
$expiresIn = $user->expiresIn;
  
سطر 132: سطر 112:
  
 
$token = $user->token;
 
$token = $user->token;
 
 
$tokenSecret = $user->tokenSecret;
 
$tokenSecret = $user->tokenSecret;
  
سطر 138: سطر 117:
  
 
$user->getId();
 
$user->getId();
 
 
$user->getNickname();
 
$user->getNickname();
 
 
$user->getName();
 
$user->getName();
 
 
$user->getEmail();
 
$user->getEmail();
 
 
$user->getAvatar();
 
$user->getAvatar();
 
</syntaxhighlight>
 
</syntaxhighlight>
سطر 160: سطر 135:
 
== مصادر ==
 
== مصادر ==
 
* [https://laravel.com/docs/5.6/socialite صفحة Socialite في توثيق Laravel الرسمي].
 
* [https://laravel.com/docs/5.6/socialite صفحة Socialite في توثيق Laravel الرسمي].
 +
[[تصنيف:Laravel|{{SUBPAGENAME}}]]
 +
[[تصنيف: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);

مصادر