Google auth2 API缺少时区信息?

时间:2012-08-13 13:26:39

标签: timezone oauth-2.0

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

2 个答案:

答案 0 :(得分:5)

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

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

进行身份验证后,您可以request the calendar you're interested in。我想用户的主日历是你最好的选择。

最后,每个日历的设置均为timeZone property

Here's sample code for the Google API PHP client.

答案 1 :(得分:1)

截至2013年3月21日,Google未在对userinfo.profile终端的回复中提供此信息 - 即使他们声称他们这样做了。

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

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

  • ID
  • 电子邮件
  • verified_email
  • 名称
  • GIVEN_NAME
  • FAMILY_NAME
  • 链接(到G +个人资料,如果有)
  • 性别
  • 生日
  • 区域设置
  • hd(如果相关,似乎是Google Apps域名)

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

目前获取时区的最佳方法可能是使用JavaScript(从用户的浏览器中检索时区)。 StackOverflow的答案解释了如何执行此操作:

Getting the client's timezone in JavaScript

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