【问题标题】:Laravel 5.1 BadMethodCallException in Controller.php line 283 Method [create] does not existLaravel 5.1 Controller.php 第 283 行中的 BadMethodCallException 方法 [create] 不存在
【发布时间】:2015-12-17 07:17:36
【问题描述】:

我想通过使用 Facebook 身份验证等社交身份验证来创建用户,我遵循了来自 youtube 的本教程 Socialite Authentication in Laravel 5.1

使用本教程后,我得到了一个异常

BadMethodCallException in Controller.php line 283:
  Method [create] does not exist.

  in Controller.php line 283
  at Controller->__call('create', array(array('name' => null, 'email' =>    'abdur.razzaq06@gmail.com', 'password' => '4dbf14f26a97584375b7b2c84b6a4786cb1b4a43'))) in SocialAuthController.php line 84
  at SocialAuthController->create(array('name' => null, 'email' => 'abdur.razzaq06@gmail.com', 'password' => '4dbf14f26a97584375b7b2c84b6a4786cb1b4a43')) in SocialAuthController.php line 84
  at SocialAuthController->github_Callback()
  at call_user_func_array(array(object(SocialAuthController), 'github_Callback'), array()) in Controller.php line 256
  at Controller->callAction('github_Callback', array()) in ControllerDispatcher.php line 164
  at ControllerDispatcher->call(object(SocialAuthController), object(Route), 'github_Callback') in ControllerDispatcher.php line 112
  at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
  at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
  at Pipeline->Illuminate\Pipeline\{closure}(object(Request))

我能做些什么来解决它?

这是我的代码:

app\routes.php

// facebook Sociolite
   Route::get('/auth/facebook', 'Auth\SocialAuthController@redirectToProvider');
   Route::get('callback_facebook', 'Auth\SocialAuthController@handleProviderCallback');

App\Http\Auth|SocialAuthController.php

  <?php

       namespace App\Http\Controllers\Auth;

       use Illuminate\Http\Request;
       use App\Http\Requests;
       use App\Http\Controllers\Controller;
       use Illuminate\Foundation\Auth\ThrottlesLogins;
       use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
       use Illuminate\Foundation\Validation\ValidatesRequests;

       use App\User;
       use Validator;

     //use ValidatesRequests;
       use Socialite;
       use Auth;
       use redirect;

       class SocialAuthController extends Controller
       {   
             // For Facebook
              public function redirectToProvider(){

                     return Socialite::driver('facebook')->redirect();
              }

              public function handleProviderCallback(){

                     $curl = curl_init();
                     curl_setopt($curl , CURLOPT_SSL_VERIFYPEER, false);

                     $user = Socialite::driver('facebook')->user();
                     $data = ['name'=>$user->name, 'email'=>$user->email, 'password'=>$user->token];

                     $userDB = User::where('email',$user->email)->first();


                     if (!is_null($userDB)){
                           Auth::login($userDB);
                     }
                     else{
                          Auth::login($this->create($data)); // line 84
                       // Auth::login($this->data($data));
                     }
               return redirect('/pages/profile');
               }

         }

vendor/laravel/framework/src/Illuminate/Routing/Controller.php

     <?php

          namespace Illuminate\Routing;

          use Closure;
          use BadMethodCallException;
          use Illuminate\Support\Str;
          use InvalidArgumentException;
          use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

          abstract class Controller
          {
                public function __call($method, $parameters)
                {
                       throw new BadMethodCallException("Method [$method] does not exist."); // line 283
                }
          }

【问题讨论】:

    标签: laravel laravel-5 laravel-5.1 laravel-socialite


    【解决方案1】:

    第 84 行调用控制器的 create 方法。定义了吗?你得到的异常意味着它不是。

    您必须在 SocialAuthController 中实际实现 create 方法

    【讨论】:

    • 你不能调用未定义的方法。这没有意义
    • 但此代码在设置我的电子邮件验证控制器之前已成功运行。
    • 您不能只是将示例代码拼凑在一起。似乎您没有清楚地理解方法和类。您应该阅读该内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多