1

我正在寻找一种使用管理员用户模拟谷歌应用域用户的方法。我可以使用 google data document list api 轻松做到这一点,但我找不到使用新 Drive API 的方法。

确切地说,我想要做的是使用 Oauth2 验证我的管理员用户(我已经这样做了),检索我的域的用户列表,然后模拟我的用户,或者至少能够从那些用户的驱动。

在 google apps 的管理面板中,有 Oauth consumer key 和 Oauth consumer secret,但是这些是在 Oauth1 2LO 中使用的,而不是 Oauth2 中使用的。

是否有适当的方法/解决方法/破解来实现我想要的?

此致,

杰罗姆

4

2 回答 2

2

我只是以 google-api-ruby-client 为例,但您应该能够使用允许通过管理面板访问的服务帐户执行此操作 -> 高级工具 -> 管理第三方 oauath 客户端。一旦获得许可,您可以在http://code.google.com/p/google-api-ruby-client/source/browse/service_account/analytics.rb?repo=samples处按照服务帐户的示例进行操作,而不是使用授权

client.authorization = asserter.authorize()

您可以使用

client.authorization = asserter.authorize("id@domain.com")

我还没有做很多,但是在用这种方法进行身份验证后,我已经能够列出我域中用户拥有的所有文档。

于 2012-10-06T19:56:39.473 回答
2

感谢詹姆斯伍德沃德,我已经能够冒充用户。我发布了一个答案以提供 Java 特定的详细信息。

  1. 在 API 控制台中创建服务帐户。创建了 3 个重要资源:
    1. 客户端 ID :用于授权 Google Apps 域上的应用程序
    2. 电子邮件地址:用于授权应用程序的请求
    3. .p12 密钥文件:用于授权应用程序的请求
  2. 在 Google Apps 管理面板上授权应用程序,为其提供服务帐户客户端 ID,以及应用程序需要的所有范围。
  3. GoogleCredential以这种方式创建:

    GoogleCredential serviceCred = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
                .setJsonFactory(JSON_FACTORY)
                .setServiceAccountId(SERVICE_ID)
                .setServiceAccountScopes(Arrays.asList(SCOPES))
                .setServiceAccountUser("impersonated.user@domain.com")
                .setServiceAccountPrivateKeyFromP12File("key.p12")
                .build();
    

这些凭据现在可用于验证应用程序在任何授权范围内发出的请求。

于 2012-10-09T09:45:14.340 回答