Google Admin SDK JAVA API获取空用户列表

时间:2014-10-09 13:22:25

标签: google-api-java-client google-admin-sdk

以下代码与PlusService Account Sample相同,我为Directory API修改了它,创建了新的测试用户,分配了id和密码,它返回空{}而不是返回用户测试

GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
        .setJsonFactory(JSON_FACTORY)
        .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
        .setServiceAccountScopes(Collections.singleton( DirectoryScopes.ADMIN_DIRECTORY_USER))
        .setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
        .setServiceAccountUser("xxx@example.com")
        .build();
    // set up global Plus instance
    plus = new Plus.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(APPLICATION_NAME).build();
    dir = new Directory.Builder(httpTransport, JSON_FACTORY, credential)
    .setApplicationName("some name").build();
    User test= new User();
    test.setCustomerId("1");
   test.setPassword("sdfsdf");
   dir.users().insert(test).execute();
    System.out.print("Return test"+dir.users().list().toString());

1 个答案:

答案 0 :(得分:0)

我认为上面的验证码存在两个问题:

  1. CLIENT_ID =“xxxxx@developer.gserviceaccount.com”;看起来像云控制台的电子邮件地址而不是客户端ID,当我查看云控制台时,我看到这两个字段
  2.   

    客户ID   350427230836-43vs8qmh24dmn4hs4ih2jv8jeq8htulk.apps.googleusercontent.com

         

    电子邮件地址   350427230836-43vs8qmh24dmn4hs4ih2jv8jeq8htulk@developer.gserviceaccount.com

    因此您似乎使用的是电子邮件地址,而不是没有@developer的客户端ID

    1. .setClientAuthentication(new BasicAuthentication(CLIENT_ID,CLIENT_SECRET)),似乎没有太多关于此的文档,但OAuth客户端代码中似乎有这个test class,它使用客户端ID和基本身份验证的秘密字符串,我怀疑这是正确的。基本身份验证需要实际的用户名和密码,因此这将是您要用于此OAuth的Google帐户的电子邮件地址和密码。
    2. 我不建议在OAuth中使用用户名密码,您可以使用具有域范围委派的服务帐户,也可以编写一些代码来提示管理员用户以获取OAuth令牌,这里有很多示例(https://code.google.com/p/google-api-java-client/source/browse/?repo=samples

      有关使用服务帐户的信息,请参阅以下答案:

      Create users using Service Account with Google Admin SDK?