使用Google Directory Admin API查找UserKey时出错

时间:2015-01-07 15:19:21

标签: java google-admin-sdk

我有一些代码可以检索,删除和更新,以及创建Google用户。我可以使用以下方法创建用户:

public void createUser(String id, String firstName, String lastName, String email, String password){

    User user = new User();

    try{


        UserName name = new UserName();
        name.setFamilyName(lastName);
        name.setGivenName(firstName);
        user.setName(name);
        user.setPassword(password);
        user.setPrimaryEmail(email);
        user.setId(id);

        System.out.println(service.users().insert(user).execute());         
    }
    catch(Exception e){
        System.out.println("Error creating user: " + e);
    }

我还可以使用以下方法检索userKey:

System.out.println("UserKey: " + service.users().get(id).getUserKey());

但是当我尝试更新或删除具有id的用户时,我收到以下错误:

 com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
{
  "code" : 404,
  "errors" : [ {
  "domain" : "global",
  "message" : "Resource Not Found: userKey",
  "reason" : "notFound"
} ],
"message" : "Resource Not Found: userKey"
}

我的删除方法如下:

public void deleteUser(String id){
    try{
        System.out.println(service.users().delete(id).execute());
    }
    catch(Exception e){
        System.out.println("Error deleting user: " + e);
    }
}

如果我将删除或更新方法传递给电子邮件地址(id@domain.edu),它会找到该帐户并正常工作,但我需要能够在insert方法中仅传递我创建帐户的ID 。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

调用Directory API时,您必须始终指定用户的完整电子邮件地址或用户的Google唯一ID。仅提供用户名的本地部分是不够的,因为这不允许Google确定用户与哪个Google Apps域相关联。