الفرق بين المراجعتين لصفحة: «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);

مصادر