在尝试检索经过身份验证的Google+用户的电子邮件地址时获取“gapi.client未定义”

Getting "gapi.client is undefined" when trying to retrieve an authenticated Google+ user's email address

本文关键字:获取 gapi 未定义 client 电子邮件地址 用户 检索 经过 Google+ 身份验证      更新时间:2023-09-26

我正在尝试从使用google +登录按钮登录我的网站的访问者那里检索用户数据,但我最终在javascript控制台中收到消息"TypeError:gapi.clientis undefined"。

由于我无法识别错误,我最终从Google复制/粘贴了示例代码,可以在此处找到:https://developers.google.com/+/web/people/#retrieve_an_authenticated_users_email_address

我唯一更改的是客户端ID(用于Web应用程序)。

而且我仍然得到同样的错误!

由于示例代码对我不起作用,我在想,也许我在 Google API 控制台中的设置是错误的。我已尝试按照说明进行操作:

  • Google+ API 服务处于活动状态
  • 重定向 URI:无
  • JavaScript 起源设置为本地主机和实际生产域。

还尝试将示例代码上传到生产服务器,只是为了查看这是否是本地环境问题,但我仍然收到相同的错误。

除了plusone脚本之外,还必须包含脚本并包含client API:

<script src="https://apis.google.com/js/client:plusone.js" type="application/javascript"></script>

演示页面操作不正确,我已经修复了。

gapi.client.load('plus', 'v1', function() {
    var request = gapi.client.plus.people.get({
        'userId': 'me'
    });
    request.execute(function(response) {
        console.log(response);   
    });
});

这听起来可能很愚蠢.. 但有时你只需要关闭并重新打开浏览器...

我在几乎所有相关的SO问题中尝试了几乎所有的解决方案,但没有任何效果。

最后我决定看看它是否适用于另一个浏览器,它确实......因此,我只是关闭并重新打开了我正在使用的浏览器。瞧。

我不确定为什么它不起作用。我没有缓存请求,我每次都使用 ctrl-F5 重新加载页面,并且还禁用了开发工具中的缓存(当使用开发工具时)。

这是我得到他的错误的两个原因,如果我遇到更多,我会在将来更新。

  1. 我遇到的错误之一是未加载变量。我默认使用Waterfox,尽管我觉得我没有获得任何有用的信息。我使用了Chrome,它给了我一条有用的错误消息,说明授权按钮为空。我不得不将授权按钮(我通过删除 camelCase 使其正确)直接移动到函数中,一切正常。

  2. 我还默认禁用第三方 cookie,再次没有得到任何有用的信息。我从字面上慢慢地重新创建了 Waterfox 配置文件,直到我到达首选项文件并最终确定首选项是第三方 cookie,启用它们,一切再次运行。