【问题标题】:Getting "gapi.client is undefined" when trying to retrieve an authenticated Google+ user's email address尝试检索经过身份验证的 Google+ 用户的电子邮件地址时出现“gapi.client 未定义”
【发布时间】:2013-10-20 10:29:08
【问题描述】:
我正在尝试从使用 google + 登录按钮登录到我的网站的访问者那里检索用户数据,但我最终在 javascript 控制台中收到消息“TypeError: gapi.client is undefined”。
由于我无法识别错误,我最终从 Google 复制/粘贴了示例代码,可在此处找到:https://developers.google.com/+/web/people/#retrieve_an_authenticated_users_email_address
我唯一更改的是客户端 ID(用于 Web 应用程序)。
我仍然遇到同样的错误!
由于示例代码对我不起作用,我在想,也许我在 Google API 控制台中的设置是错误的。我已尝试按照说明进行操作:
- Google+ API 服务已启用
- 重定向 URI:无
- JavaScript origins 设置为 localhost 和实际生产
域。
也尝试将示例代码上传到生产服务器,只是为了看看这是否是本地环境问题,但我仍然遇到同样的错误。
【问题讨论】:
标签:
javascript
api
google-api
google-plus
【解决方案1】:
除了plusone 脚本之外,您还必须包含该脚本并包含client API:
<script src="https://apis.google.com/js/client:plusone.js" type="application/javascript"></script>
演示页面做错了,我已经修复了。
【解决方案2】:
gapi.client.load('plus', 'v1', function() {
var request = gapi.client.plus.people.get({
'userId': 'me'
});
request.execute(function(response) {
console.log(response);
});
});
【解决方案3】:
这听起来可能很愚蠢..但有时您只需要关闭并重新打开浏览器...
我尝试了几乎所有相关 SO 问题中的几乎所有解决方案,但没有任何效果。
最后我决定看看它是否与另一个浏览器一起工作,它确实......因此我关闭并重新打开了我正在使用的浏览器......瞧。
我不确定它为什么不起作用。我没有缓存请求,我每次都使用 ctrl-F5 重新加载页面,并且还禁用了开发工具中的缓存(在使用开发工具时)。
【解决方案4】:
这是我收到他的错误的两个原因,如果/当我遇到更多错误时,我会更新。
我遇到的错误之一是没有加载变量。虽然我觉得我没有得到任何有用的信息,但我默认使用 Waterfox。我使用了 Chrome,它给了我一个关于授权按钮为空的有用错误消息。我不得不将 authorizeButton(我通过删除 camelCase 使其正确)直接移动到函数中,一切正常。
默认情况下,我还禁用了 第三方 cookie,但我还是没有得到任何有用的信息。我慢慢地重新创建了 Waterfox 配置文件,直到找到首选项文件并最终确定首选项是针对 第三方 cookie,启用它们并且一切都再次起作用。