2010-05-21 52 views
3

嗨我工作在Java,并试图检索域中的所有用户,我用Provisionin API ............其工作良好但我的想法是使用双腿OAuth从域中检索用户是否可能?我不知道如何指定网址,请帮助我,我试图程序供应API使用java

final String CONSUMER_KEY = "example.com"; 
    final String CONSUMER_SECRET = "12345678122154154df9"; 
    final String DOMAIN = "example.com"; 
    GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters(); 
    oauthParameters.setOAuthConsumerKey(CONSUMER_KEY); 
    oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET); 
    oauthParameters.setOAuthType(OAuthType.TWO_LEGGED_OAUTH); 
    OAuthHmacSha1Signer signer = new OAuthHmacSha1Signer(); 
    URL feedUrl = new URL("https://apps-apis.google.com/a/feeds/" + DOMAIN + 
     "/user/2.0/[email protected]"); 
userService = new UserService("Myapplication"); 
    userService.setOAuthCredentials(oauthParameters, signer); 
    userService.useSsl(); 
    UserFeed allUsers = new UserFeed(); 
     UserFeed allpage; 
     Link nextLink; 


do { 
    allpage = userService.getFeed(feedUrl, UserFeed.class); 

    allUsers.getEntries().addAll(allpage.getEntries()); 

    nextLink = allpage.getLink(Link.Rel.NEXT, Link.Type.ATOM); 
    if (nextLink != null) { 
    feedUrl = new URL(nextLink.getHref()); 
    } 

}while (nextLink != null); 
return allUsers; 
} 

其returing误差为com.google.gdata.util.AuthenticationException如下:未知授权头

回答

1
// use real values. 
    final String CONSUMER_KEY = "example.com"; 
    final String CONSUMER_SECRET = "secret-here"; 
    final String DOMAIN = "domain.com"; 

    GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters(); 
    oauthParameters.setOAuthConsumerKey(CONSUMER_KEY); 
    oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET); 
    oauthParameters.setOAuthType(OAuthType.TWO_LEGGED_OAUTH); 
    OAuthHmacSha1Signer signer = new OAuthHmacSha1Signer(); 

    URL feedUrl = new URL("https://apps-apis.google.com/a/feeds/" + DOMAIN + "/user/2.0"); 

    UserService service = new UserService("ProvisiongApiClient"); 
    service.setOAuthCredentials(oauthParameters, signer); 
    service.useSsl(); 
    UserFeed resultFeed = service.getFeed(feedUrl, UserFeed.class); 

    for (UserEntry entry : resultFeed.getEntries()) { 
     System.out.println(entry.getTitle().getPlainText()); 
    } 

对于Google Apps API来说,双腿OAuth是一个特殊的用途,因为它是无用户的。你不需要[email protected]。管理员可以授权客户https://www.google.com/a/cpanel/<your domain>/ManageOauthClients