Runtime: com.google.gdata.client.authn.oauth.OAuthException: oauth_token existiert nicht
-
29-09-2019 - |
Frage
Ich versuche, den Admin-Status eines Benutzers auf einer Google Apps-Domain zu erhalten.
Ich habe daher die CONSUMER_KEY setzen und CONSUMER_SECRET bekam ich von dem Google-Marktplatz der Auflistung meiner App in meinen Code.
String CONSUMER_KEY = "748096634522.apps.googleusercontent.com";
String CONSUMER_SECRET = "PK/Wx/9sbLkz5hhj6rq6LKCZ";
Und ich habe die Anwendung autorisierten Zugriff auf den Umfang haben,
https://apps-apis.google.com/a/feeds/user/
Aber wenn ich versuche, auf die URL zugreifen
https://apps-apis.google.com/a/feeds/user/2.0/domain.com/username%40domain.com
ich die folgende Fehlermeldung erhalten:
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.
Der Versuch, auf Googles OAuth Spielplatz aber funktioniert perfekt, WHITH die oben angegebenen Daten.
Hier ist mein Code:
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;
}
Jede Idee, warum es heißt "oauth_token existiert nicht"?
Lösung
Fügen Sie diese Zeile Code.
oauthParameters.setOAuthType (OAuthType.TWO_LEGGED_OAUTH);
Dies kann Ihr Problem lösen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow