我正在开发一款允许用户将自己的云端硬盘分享给朋友的应用。但是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
注册了一个,在共享文件时没有域名限制。
任何人都可以帮忙吗?谢谢!
答案 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。