6

最近我开始为我的网络应用程序使用http://code.google.com/p/google-api-php-client/ ( Google OAuth2 )。但是我画了一个空白,因为我无法为我的用户读取时区。我尝试以某种方式在我的 Google 帐户页面上输入它,但我没有找到任何这样的字段。有谁知道谷歌是否真的提供这样的信息,如果是这样,我如何将它设置到我的帐户中?

4

2 回答 2

5

您可以使用的最接近的东西是您的 Google 日历上可用的时区。检查日历设置页面上的“常规”标签:https: //www.google.com/calendar

现在,您可以在向用户验证您的服务时请求访问用户的日历。使用范围“ https://www.googleapis.com/auth/calendar ”(文档

当您通过身份验证后,您可以请求您感兴趣的日历。我猜用户的主日历是你最好的选择。

最后,每个日历都有带有timeZone 属性的设置。

这是 Google API PHP 客户端的示例代码。

于 2013-03-14T17:45:48.790 回答
1

自 2013 年 3 月 21 日起,Google 不会在他们对 userinfo.profile 端点的响应中提供此信息——即使他们声称他们会这样做。

该文档声称时区可用: https ://developers.google.com/accounts/docs/OAuth2Login?hl=en#userinfocall

但是,当前实现仅返回以下数据:

  • ID
  • 电子邮件
  • 验证电子邮件
  • 姓名
  • 给定的名称
  • 链接(指向 G+ 个人资料,如果有)
  • 性别
  • 生日
  • 语言环境
  • hd(似乎是 Google Apps 域,如果相关)

请注意,上面列出的页面上的当前文档中未列出“生日”和“高清”。我正在从端点收到的真实响应中验证这些字段。

目前获取时区的最佳方法可能是使用 JavaScript(从用户的浏览器中检索时区)。这个 StackOverflow 答案解释了如何做到这一点:

在 JavaScript 中获取客户端的时区

不幸的是,这必须作为次要操作发生,这意味着您必须将此数据与从端点检索的数据分开添加到您的数据库中。要考虑的一个技巧是在您发起端点请求的页面上捕获时区偏移量,然后将时区偏移量值附加到 OAuth 请求中的“状态”值。然后,该值将在回调中返回,您可以将其提取并添加到在您写入数据库的同一过程中返回的其他配置文件信息中。

于 2013-03-22T00:21:36.977 回答