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

خطأ "Invalid Argument Exception" في لارافل Socialite

Amir Alsaeed

السؤال

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

"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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...