Предоставление Api с использованием Java - PullRequest
3 голосов
/ 21 мая 2010

Привет, я работаю в Java и пытался получить всех пользователей в домене, для которых я использовал Provisionin api ............ Это работает хорошо, но моя идея состоит в том, чтобы использовать 2-legged OAuth для получения пользователей из домена Возможно ли это? Я не могу указать URL, пожалуйста, помогите мне, и я попробовал следующую программу

    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/?xoauth_id=123@example.com");
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;
 }

Выдает ошибку как com.google.gdata.util.AuthenticationException: неизвестный заголовок авторизации

1 Ответ

1 голос
/ 26 апреля 2011
    // 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 для API Google Apps является особенным в том смысле, что он не требует участия пользователя. Вам не нужно xoauth_id=123@xxx.com. Администратор может авторизовать клиентов от https://www.google.com/a/cpanel/<your domain>/ManageOauthClients

...