以下代码与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());
答案 0 :(得分:0)
我认为上面的验证码存在两个问题:
客户ID 350427230836-43vs8qmh24dmn4hs4ih2jv8jeq8htulk.apps.googleusercontent.com
电子邮件地址 350427230836-43vs8qmh24dmn4hs4ih2jv8jeq8htulk@developer.gserviceaccount.com
因此您似乎使用的是电子邮件地址,而不是没有@developer的客户端ID
我不建议在OAuth中使用用户名密码,您可以使用具有域范围委派的服务帐户,也可以编写一些代码来提示管理员用户以获取OAuth令牌,这里有很多示例(https://code.google.com/p/google-api-java-client/source/browse/?repo=samples )
有关使用服务帐户的信息,请参阅以下答案: