3

Hi i'm working in java and tried to retrieve all the user in the domain for that i used Provisionin api............ Its working good But my idea is to Use 2-legged OAuth to retrieve the users from the domain Is it Possible? I don't how to specify the URL please Help me And i tried the following the program

    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;
 }

Its returing the error as com.google.gdata.util.AuthenticationException: Unknown authorization header

1 Answer 1

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());
    }

2-Legged OAuth for Google Apps APIs is special in the sense that it is user-less. You don't need [email protected]. An admin can authorize clients from https://www.google.com/a/cpanel/<your domain>/ManageOauthClients

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.