8

我正在开发一个允许用户将他们的云端硬盘文件分享给朋友的应用程序。但是Google App Account存在问题,例如someone@somadomain.com,其中的文件无法与不在该域下的人共享。尽管共享策略可以由管理员更改somedomain.com,但我更喜欢不允许人们通过 Google Apps 帐户使用我的应用程序。

我还查看了这篇文章:如何确定该帐户是否为 Google Apps 帐户?. 但我不同意检查域以检测帐户类型的想法。因为人们可以使用任何电子邮件地址注册 Google 帐户。我刚刚在我的 Hotmail 上注册了一个,someone@hotmail.com共享文件时没有域限制。

有人能帮忙吗?谢谢!

4

3 回答 3

13

假设您包括:

https://www.googleapis.com/auth/userinfo.email

在您的 OAuth 范围内,您可以提出以下请求:

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

如果它是 Google Apps 帐户,则调用将返回一个“hd”参数(托管域?),并将 Google Apps 域作为其值。如果是消费者账户,无论是@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
}
于 2013-01-18T14:39:35.117 回答
1

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

如果我是你,我不会禁用 Google Apps 帐户的服务(多么不公平!!:))许多人购买 Google Apps 帐户是为了拥有一个漂亮的电子邮件域,并且他们的帐户的行为就像任何其他 Google 帐户一样......

我会在需要时尝试将 fils 的 ACL 设置为公共,如果这不起作用,则显示它们并显示一条很好的错误消息,警告他们他们的管理员已禁用公共共享...不会有很多用户无论如何,让其他“正常”Google Apps 帐户无法使用您的应用程序太糟糕了。

于 2012-07-25T19:31:49.763 回答
-2

Or check the domain using a service like BrowserSpy. If the MX records appear correct, then it's using Google Apps.

于 2014-12-29T17:50:23.983 回答