使用Google管理员在整个域内查看云端硬盘文件

时间:2017-03-28 16:49:21

标签: python google-drive-api google-admin-sdk

我正在尝试列出域范围内的所有Google云端硬盘文件,这两个用户仍在此处工作,以及那些已经移动的用户。有了这个,我们可以grep某些术语(以前的客户)的输出删除客户相关的文件。

我相信我有一个成功的方式来列出使用Admin SDK Quickstart的所有用户,因为我们只有大约200个用户(最多500个)。我还可以使用Drive REST API的files.list()方法为用户列出所有文件。 我需要知道的是如何迭代地模仿每个用户,以便运行文件列表脚本。

我找到了模糊.setServiceAccountUser(someone@domain.com),但我不确定在服务帐户授权步骤或单独的中间人脚本中实现此目的。

2 个答案:

答案 0 :(得分:0)

查看https://github.com/pinoyyid/googleDriveTransferOwnership/blob/master/src/couk/cleverthinking/tof/Main.java

特别是第285-299行,它涉及为模拟用户生成凭证。

   GoogleCredential.Builder builder = new GoogleCredential.Builder()
                .setTransport(HTTP_TRANSPORT)
                .setJsonFactory(JSON_FACTORY)
                .setServiceAccountId(serviceAccountEmailAddress)
                .setServiceAccountPrivateKeyFromP12File(f)
                .setServiceAccountScopes(Collections.singleton(SCOPE));
        // if requested, impresonate a domain user
        if (!"ServiceAccount".equals(impersonatedAccountEmailAddress)) {
            builder.setServiceAccountUser(impersonatedAccountEmailAddress);
        }

        // build the Drive service
        Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, null)
                .setApplicationName("TOF")
                .setHttpRequestInitializer(builder.build()).build();

这是Java,但至少应该告诉你步骤是什么。

答案 1 :(得分:0)

您需要实施authorization flow for Service Accounts

在GCP项目(console.developers.google.com)中创建服务帐户后,启用DWD(域范围委派),然后在G Suite管理控制台中授权该服务帐户,然后可以使用该密钥“冒充”G Suite实例中的任何帐户:

从json文件

创建凭证对象
from oauth2client.service_account import ServiceAccountCredentials
scopes = ['https://www.googleapis.com/auth/gmail.readonly']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
    '/path/to/keyfile.json', scopes=scopes)

创建可以冒充user@example.org的凭据(可以是域中的任何用户)

delegated_credentials = credentials.create_delegated('user@example.org')

授权凭证对象(即获取access_token)

from httplib2 import Http
http_auth = credentials.authorize(Http())

调用Gmail API:

from apiclient import discovery
service = discovery.build('gmail', 'v1', http=http)
response = service.users().messages().list(userId='user@example.org').execute()