اذهب إلى المحتوى

السؤال

نشر

أحاول إضافة تسجيل الدخول إلى موقعي عن طريق فيسبوك، ولكن بعد الضغط على زر تسجيل الدخول أحصل على عدة أخطاء:

"Invalid Argument Exception" و No Socialite driver was specified.

مع أنني قمت بإدخال معلومات app_id و app_secret في المشروع. كيف يمكنني حل هذه المشكلة؟

Recommended Posts

  • 0
نشر

يجب عليك التأكد أولاً من تحميل المكتبة Socialite عن طريق تنفيذ الأمر:

composer require laravel/socialite

وبعدها في ملف config/services.php نقوم بإضافة بيانات التطبيق في فيسبوك:

'facebook' => [

    'client_id'     => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect'      => env('FACEBOOK_CALLBACK_URL'),
],

مع تغيير رابط redirect إلى الرابط الذي سيتم تحويل المستخدم إليه بعد تسجيل الدخول، ويمكننا وضع القيم ضمن .env:

FACEBOOK_CLIENT_ID=paste_client_id_here
FACEBOOK_CLIENT_SECRET=paste_client_secret_here
FACEBOOK_CALLBACK_URL=https://www.example.com/auth/facebook/callback

ونتأكد من إضافة مسارات التوجيه الصحيحة:

Route::get('auth/facebook/', 'Auth\FacebookController@redirect')->name('auth.facebook');

Route::get('auth/facebook/callback', 'Auth\FacebookController@callback')->name('auth.facebook.callback');

وأخيراً في المتحكم الخاص نقوم باستدعائها عن طريق Socialite::driver('facebook')->user() وتنفيذ باقي العمليات الخاصة بك لمعالجة عملية تسجيل الدخول والتعامل مع قاعدة البيانات وجدول المستخدمين بالشكل التالي:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\User;
use Socialite;

class FacebookController extends Controller {

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function redirect()
    {
        return Socialite::driver('facebook')->redirect();
    }


    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function callback(Request $request)
    {
        try {

            $facebookAccount = Socialite::driver('facebook')->user();

            // نضع هنا عمليات تسجيل الدخول أو التعامل مع قاعدة البيانات

            return redirect()->route('your.route.name');


        } catch (Exception $e) {


            return redirect()->route('auth.facebook');
        }
    }
}

وفي حال بقي ظهور الخطأ: "Invalid Argument Exception" يجب عليك التأكد من تفعيل Status: Live للتطبيق ضمن حساب المطورين في فيسبوك.

  • 0
نشر

في ملف composer.json يمكنك وضع التالي 

"laravel/socialite": "~5.2.2",

ثم تشغيل الأمر 

composer update

ثم في ملف config/services.php ضع التالي 

'facebook' => [
        'client_id'     => '1234567890444',
        'client_secret' => '1aa2af333336fffvvvffffvff',
        'redirect'      => 'http://laravel.dev/login/callback/facebook',
    ],

ثم تقوم بإنشاء مسارين وهما 

Route::get('/login/{provider?}',[
    'uses' => 'AuthController@getSocialAuth',
    'as'   => 'auth.getSocialAuth'
]);


Route::get('/login/callback/{provider?}',[
    'uses' => 'AuthController@getSocialAuthCallback',
    'as'   => 'auth.getSocialAuthCallback'
]);

ثم إنشاء المتحكم بهذه الطريقة 

<?php namespace App\Http\Controllers;

 use Laravel\Socialite\Contracts\Factory as Socialite;

 class AuthController extends Controller
 {

       public function __construct(Socialite $socialite){
           $this->socialite = $socialite;
       }


       public function getSocialAuth($provider=null)
       {
           if(!config("services.$provider")) abort('404'); 

           return $this->socialite->with($provider)->redirect();
       }


       public function getSocialAuthCallback($provider=null)
       {
          if($user = $this->socialite->with($provider)->user()){
             dd($user);
          }else{
             return 'هناك شيء خطأ';
          }
       }

 }

و في تطبيق الفيسبوك يجب إضافة عنوان url.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...