2010-05-21 53 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