Google auth2 API缺少时区信息?

6
最近我开始使用http://code.google.com/p/google-api-php-client/Google OAuth2)来开发我的网站应用程序。 然而,我无法读取用户的时区信息,感到困惑。 我尝试在我的Google账户页面上输入相关信息,但是我没有找到任何这样的字段。 请问是否有人知道Google是否提供此类信息,如果提供,如何将其设置为我的账户?
2个回答

5
你可以使用 Google 日历上可用的时区作为最接近你的选择。在你的日历设置页面的“常规”选项卡中查看:https://www.google.com/calendar 现在,在你对用户进行身份验证时,你可以请求访问他们的日历。使用范围 "https://www.googleapis.com/auth/calendar" (docs)
当你完成身份验证后,你可以 请求你感兴趣的日历。我猜用户的主要日历是最好的选择。
最后,每个日历都有一个 时区属性 的设置。 以下是适用于 Google API PHP 客户端的示例代码。

1
截至2013年3月21日,谷歌在userinfo.profile端点的响应中不提供此信息,尽管他们声称会提供。
这份文档声称时区可用: https://developers.google.com/accounts/docs/OAuth2Login?hl=en#userinfocall 然而,当前实现仅返回以下数据:
- id - 电子邮件 - 已验证的电子邮件 - 名称 - 名字 - 姓氏 - 链接(到G+个人资料,如果有) - 性别 - 生日 - 区域设置 - hd(如果相关,则似乎是Google Apps域)
请注意,“生日”和“hd”未列在上述页面的当前文档中。我正在通过我从端点接收到的真实响应来验证这些字段。
目前获取时区的最佳方法可能是使用JavaScript(从用户的浏览器中检索时区)。这个StackOverflow答案解释了如何做到这一点:

JavaScript中获取客户端时区的方法

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接