RuntimeException: com.google.gdata.client.authn.oauth.OAuthException: oauth_token не существует - PullRequest
1 голос
/ 30 ноября 2010

Я пытаюсь получить административное состояние пользователя в домене Служб Google.

Поэтому я включил в свой код CONSUMER_KEY и CONSUMER_SECRET, полученные из списка моего приложения на Google Marketplace.

String CONSUMER_KEY = "748096634522.apps.googleusercontent.com";
String CONSUMER_SECRET = "PK/Wx/9sbLkz5hhj6rq6LKCZ";

И я разрешил приложению иметь доступ к области действия

https://apps-apis.google.com/a/feeds/user/

Но когда я пытаюсь получить доступ к URL

 https://apps-apis.google.com/a/feeds/user/2.0/domain.com/username%40domain.com

Я получаю следующую ошибку:

javax.servlet.ServletContext log: Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract com.icada.idea.client.LoginInfo com.icada.idea.client.LoginService.login(java.lang.String,java.lang.String)' threw an unexpected exception: java.lang.RuntimeException: com.google.gdata.client.authn.oauth.OAuthException: oauth_token does not exist.

Пример Игровая площадка Googles OAuth , однако, работает отлично, с данными, приведенными выше.

Вот мой код:

private boolean isAdmin (String userEmail, String domain) {
  boolean ret= false;

  String CONSUMER_KEY = "748096634522.apps.googleusercontent.com";
  String CONSUMER_SECRET = "PK/Wx/9sbLkz5hhj6rq6LKCZ";

  GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
  oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
  oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
  oauthParameters.setScope ("https://apps-apis.google.com/a/feeds/user/");

  com.google.gdata.client.appsforyourdomain.UserService client
    = new com.google.gdata.client.appsforyourdomain.UserService ("Idea");
  try {
    client.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());
    URL feedUrl = new URL("https://apps-apis.google.com/a/feeds/user/2.0/"
      + domain +"/"+ java.net.URLEncoder.encode (userEmail));

    UserFeed resultFeed = client.getFeed(feedUrl, UserFeed.class);
    for (UserEntry entry : resultFeed.getEntries()) {
      if (entry.getLogin ().getAdmin ().equals (Boolean.TRUE)) ret= true;
      else ret= false;
    }
  }
  catch (OAuthException ex) {
    log.severe (ex.getMessage () + ex.toString () + ex.getCause ()
      + ex.getStackTrace ().toString ());
    ex.printStackTrace();
  }
  [more catch-blocks...]

  return ret;
}

Есть идеи, почему написано "oauth_token не существует"?

1 Ответ

2 голосов
/ 23 февраля 2011

Добавьте эту строку в ваш код.

oauthParameters.setOAuthType (OAuthType.TWO_LEGGED_OAUTH);

Это может решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...