找不到类别“ App Http Controllers Auth User”

时间:2019-07-29 18:27:19

标签: php laravel

尝试在我的Laravel应用中集成Google登录时遇到此错误:

  

找不到类'App \ Http \ Controllers \ Auth \ User'

namespace App\Http\Controllers\Auth;

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

class SocialiteController extends Controller
{
public function __construct()
{
    $this->middleware('guest')->except('logout');
}


public function redirectToGoogle()
{
    return \Socialite::driver('google')->redirect();
}


public function handleGoogleCallback(Request $request)
{
    $googleUser = \Socialite::driver('google')->stateless()->user();

    $user = \User::whereGoogleId($googleUser->id)->first();

    if ($user) {
        Auth::login($user);

        return LoginController::authenticated($request, $user);
    } else {
        list($first_name, $last_name) = explode(' ', $googleUser->name);
        // signup
        $input = [
            'first_name' => $first_name,
            'last_name' => $last_name,
            'email' => $googleUser->email,
        ];

        $request->session()->flash('google_token', $googleUser->accessToken);

        return RegisterController::showRegistrationForm()->withInput($input)->with;
    }
}

另外,我不知道USER的完整名称空间 我是新来的。

如果您能提供有效的教程,我将不胜感激。 您能给我建议解决方案吗?

2 个答案:

答案 0 :(得分:0)

更新

如果您打算使用Laravel提供的默认User模型,则User类应存储在/app目录中(请首先检查它)。

鉴于您的用户模型位于app/Model目录中,请像这样更新代码:

namespace App\Http\Controllers\Auth;

// some imports..

use App\Model\User; // <------

class SocialiteController extends Controller
{

    // some code..

    public function handleGoogleCallback(Request $request)
    {

        // more code..

        $user = User::whereGoogleId($googleUser->id)->first();
//              ^^^^
        // ...
    }
}

注意:显示以下错误:

  

400错误的请求响应:

{
    "error": "invalid_grant",
    "error_description": "Bad Request"
}

这与您的Google应用程序密钥有关。这是另一个问题的一部分。

答案 1 :(得分:0)

如果User模型文件位于名为 Model 的文件夹下,则必须调用User类的完全限定名称或添加一个use对您的代码的声明,即:

$user = \Model\User::whereGoogleId($googleUser->id)->first();

// or this solution
use \Model\User;
....
$user = User::whereGoogleId($googleUser->id)->first();