当前位置: 首页 > 知识库问答 >
问题:

谷歌帐户首次登录显示错误

凌钊
2023-03-14

我正在尝试使用我的应用程序中的google帐户登录用户。当用户第一次在我的应用程序中使用google帐户登录时,我遇到了一个问题。它显示了以下错误:传递给Illumb\Auth\Guard::login()的参数1必须实现interface Illumb\Auth\UserInterface,在我的控制器中为空我有以下信息:

public function loginWithGoogle() { 
// get data from input 
$code = Input::get('code');
    // get google service
    $googleService = Artdarek\OAuth\Facade\OAuth::consumer("Google");

    if (!empty($code)) {

        // This was a callback request from google, get the token
        $token = $googleService->requestAccessToken($code);

        // Send a request with it
        $result = json_decode($googleService->request('https://www.googleapis.com/oauth2/v1/userinfo'), true);

        $user = User::whereEmail($result['email'])->first(['id']);

        if (empty($user)) {
            $data = new User;
            $data->Username = $result['name'];
            $data->email = $result['email'];
            $data->google_id = $result['id'];
            $data->first_name = $result['given_name'];
            $data->last_name = $result['family_name'];
            $data->save();
        }
        Auth::login($user);
        return Redirect::to('/');

    }
    // if not ask for permission first
    else {
        // get googleService authorization
        $url = $googleService->getAuthorizationUri();

        // return to facebook login url
        return Redirect::to((string) $url);
    }
}

我知道问题出在Auth::login($user);因为插入与Auth::login($user)同时执行;它第一次并没有从数据库中找到数据,但我不知道如何避免这个错误,而是重定向到主页面,即使用户是第一次登录。出现此错误后,用户将登录,但如何避免此错误?

共有1个答案

薄腾
2023-03-14

在不知道其余代码是否有效的情况下,您肯定会遇到以下问题:

if (empty($user)) {
    $data = new User;
    (...)
    $data->save();
}
Auth::login($user);

创建完用户后,$user变量仍然为空。您的用户实际上被称为$data。您应该重命名变量,或者改为使用$data登录。希望这足以让代码正常工作。:)

 类似资料:
  • 我试图将谷歌登录集成到我的应用程序中。我没有后端服务器,我只是得到登录到我的应用程序的谷歌帐户的详细信息。 我第一次尝试使用谷歌登录的例子,但我得到了一个错误(除了打印下面的stacktrace外,没有进行任何代码更改)。我只是使用了signianctivity示例,因为我没有后端服务器。 密码 从我所读到的,这个问题可能是由SHA1一代引起的。 我遵循了完整的指南,但显然它不起作用。 我从gra

  • 我在移动设备(iOS中的Safari)上测试我的meteor应用程序/站点时遇到问题。它利用了账户-谷歌/账户-用户界面包。 在桌面浏览器上,我能够通过谷歌完美地认证和登录。在手机Safari上测试时,当我点击“使用谷歌登录”后,我能够使用谷歌进行认证,但最终却卡在了“_oauth/google”上。“关闭”页面,显示以下消息:“登录完成。单击此处关闭此窗口。单击该链接没有任何作用。 知道这里发生

  • 我收到了这个错误 已经跟踪了https://developers.google.com/admin-sdk/directory/v1/guides/delegation 我使用这个库,并在laravel 5.7:https://github.com/spatie/laravel-google-calendar上运行它 有什么办法可以解决这个问题。请帮忙。

  • 当我构建我的应用程序并尝试它时,没有任何错误,但当我在google play store上发布我的应用程序并尝试登录Facebook时,它会给我一个错误。这个错误是一个错误的散列键,因为散列键发生了变化(我得到了sign应用程序的散列键,通过许多方式给了我相同的has键,工作正常)这是第一个问题。 我的第二个问题是当尝试使用gmail登录(谷歌登录)获取字段错误。 (您有错误的OAuth2相关配置

  • 我试图登录与谷歌在我的项目。登录页面工作正常,但当我试图获取数据,我得到这个错误。提前谢谢你。 我正在wampserver上运行我的php代码。我正在VisualStudio上编写页面。你可以看到我的代码。 //这是我的谷歌登录代码。php ( ! ) 致命错误:未捕获的GuzzleHttp\Exception\RequestException:cURL错误60:SSL证书问题:无法获取本地颁发者

  • 我们有以下场景: 用户使用帐号 A 登录谷歌云端硬盘 然后,用户添加一个新帐户并使用帐户 B 登录 Google 云端硬盘(此时有两个有效的帐户) 在帐号 B 中,用户点击云端硬盘中的创建按钮。我们的应用程序要求用户选择要用于创建文件的帐户,并且用户选择帐户B(他已经使用的帐户B)。我们的应用程序显示文件选取器,但他看到的文件是账户A中的文件,而不是账户B中的文件。 我们遵循了开发人员API指南中