为什么需要预先同步用户列表?为什么不只允许用户登录,并根据哪些用户登录在您的数据库中动态创建用户?
如果您确实需要同步用户:
同步用户应该使用Google Apps Provisioning API,而不是 Contacts API。
您是在构建已安装的应用程序(在某处的服务器上),还是构建允许来自多个站点的域管理员访问并授予访问权限的 Web 应用程序?
如果它是一个已安装的应用程序(在您的服务器上)——那么只要您只需要只读访问权限即可将用户从 Google Apps 抓取到另一个系统,这相当简单。
域管理员需要做的:
1) 参观:
https://www.google.com/a/cpanel/(YOUR DOMAIN NAME)/ManageOauthClients
授予与 (YOUR DOMAIN NAME) 相同的客户端名称对范围的访问权限:
https://apps-apis.google.com/a/feeds/user/#readonly
2) 获取您的域使用者密钥/秘密,并确保它已启用。从这里抓取:
https://www.google.com/a/cpanel/(YOUR DOMAIN NAME)/SetupOAuth
开发者需要做的:
然后,您需要使用 2-legged OAuth 1.0 和该消费者密钥和密码才能访问。您可以使用OAuth 1.0 playground进行尝试。在操场上,不要触摸第 1 和第 3 部分的任何东西。只需使用第 2 节选择 HMAC_SHA1 作为签名方法,并在这些字段中提供您的密钥(即域名)和密码。在第 #6 节中,指定您要请求的 URL,它将是:
https://apps-apis.google.com/a/feeds/(YOUR DOMAIN NAME)/user/2.0
并点击执行。请注意,OAuth 1.0 Playground 并非托管在启用 SSL 的 URL 上——因此您可能希望在尝试时在测试域上执行此操作,并在测试后重置域密码。
如果给出适当的说明,步骤 #1 和 #2 对于域管理员来说应该很容易遵循。使其更容易的唯一方法是在Google Apps Marketplace上托管应用程序。这为应用程序提供了一个密钥/秘密,安装应用程序并授予权限的管理员足以授予应用程序密钥/秘密访问安装域数据的访问权限。他们不必手动执行步骤#1 和#2。
注意:如果您正在构建的 Web 应用程序需要管理员授予对其域用户列表的访问权限,或者需要对配置 API 的写入权限,则域客户端/密钥将不起作用。您需要使用其他授权机制之一。您的应用程序需要在 API 控制台中设置客户端 ID/客户端密码——但您不需要让每个用户都这样做。
让用户使用他们的应用程序帐户登录:
使用 OAuth 2.0 登录(基于 OpenID Connect):
https ://developers.google.com/accounts/docs/OAuth2Login
您必须在 API 控制台中设置应用程序的客户端信息,但这只是一次——不需要为每个域或类似的东西都设置。