如何知道Google帐户是否属于谷歌应用程序域?

时间:2012-07-17 07:06:42

标签: google-drive-api google-docs

我正在开发一款允许用户将自己的云端硬盘分享给朋友的应用。但是Google App帐户存在问题,例如someone@somadomain.com,其中的文件无法与不在该域下的人共享。虽然管理员somedomain.com可以更改共享政策,但我不希望人们将我的应用与Google Apps帐户一起使用。

我也查看了这篇文章:How to determine if the account is a Google apps account?。但我不同意检查域以检测帐户类型的想法。因为人们可以使用任何电子邮件地址注册Google帐户。我刚刚使用我的Hotmail someone@hotmail.com注册了一个,在共享文件时没有域名限制。

任何人都可以帮忙吗?谢谢!

3 个答案:

答案 0 :(得分:12)

假设你包括:

https://www.googleapis.com/auth/userinfo.email
在您的OAuth范围中

,您可以发出以下请求:

https://www.googleapis.com/oauth2/v2/userinfo

如果是Google Apps帐户,那么Google Apps域的调用将返回“hd”参数(托管域名?)作为其价值。如果它是一个消费者帐户,无论是@ gmail.com还是潜在的“冲突帐户”,都不会返回hd参数。请参阅下面的示例。 admin@jay.powerposters.org是Google Apps帐户,而consumer @ jay.powerposters.org是一个消费者帐户。如果我在Google Apps域中创建了一个消费者用户,那么它将成为一个冲突的帐户,消费者帐户将被推出@ jay.powerposters.org命名空间,但尚未发生。

对于admin@jay.powerposters.org:

GET https://www.googleapis.com/oauth2/v2/userinfo

HTTP/1.1 200 OK
Content-length: 99
X-xss-protection: 1; mode=block
...

{
 "email": "admin@jay.powerposters.org",
 "verified_email": true,
 "hd": "jay.powerposters.org"
}

对于consumer@jay.powerposters.org:

GET https://www.googleapis.com/oauth2/v2/userinfo

HTTP/1.1 200 OK
Content-length: 71
X-xss-protection: 1; mode=block

{
 "email": "consumer@jay.powerposters.org",
 "verified_email": true
}

答案 1 :(得分:2)

我认为没有一种方法可以检查帐户是否是Google Apps帐户。我想到的唯一方法是检查域的DNS MX记录,看看域的某些服务是否由Google Apps服务器提供(例如从gmail等提供的电子邮件......),但即便如此,您可能还需要查看更多不是一项服务,因为某些Google Apps公司会停用Gmail(例如某些其他服务)来代替使​​用自定义解决方案。

如果我是你,我不会禁用Google Apps帐户的服务(多么不公平!:))很多人购买了Google Apps帐户,看起来很漂亮的电子邮件域名,他们的帐户就像其他任何Google帐户一样。

我只是尝试在需要时将fils的ACL设置为public,如果这不起作用,则会显示一条错误消息,警告他们他们的Admin已禁用公共共享...这不会是反正很多用户,让其他“普通”Google Apps帐户无法使用您的应用程序太糟糕了。

答案 2 :(得分:-2)

或使用BrowserSpy等服务检查域名。如果MX记录显示正确,那么它正在使用Google Apps。