2012-10-09 7 views
0

J'essaie d'accéder à mon compte Google+ afin d'obtenir mes données. Maintenant, je trouve l'échantillon, mais il ne fonctionne pas correctement ...Google plus-cmdline-sample

Voir here:

Mon problème est en ligne 70!

Si je tente d'exécuter ce programme suivant exception est levée

Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest 
at com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver.getRedirectUri(LocalServerReceiver.java:97) 
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:71) 
at com.google.api.services.samples.plus.cmdline.PlusSample.authorize(PlusSample.java:70) 
at com.google.api.services.samples.plus.cmdline.PlusSample.main(PlusSample.java:77) 
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 4 more 

Maintenant, j'ai essayé le projet google-plus-java-démarreur.

Je me suis inscrit sur la console, j'ai reçu mes client_id et client_secret et ma clé API mais maintenant une exception est levée.

Attempting to open a web browser to start the OAuth2 flow 
Once you authorize please enter the code here: [entered myCode here] 

============== Get my Google+ profile ============== 

Okt 15, 2012 2:00:06 PM Sample getProfile 
Schwerwiegend: { 
"error": { 
"errors": [ 
{ 
"domain": "usageLimits", 
"reason": "dailyLimitExceededUnreg", 
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.", 
"extendedHelp": "https://code.google.com/apis/console" 
} 
], 
"code": 403, 
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup." 
} 
} 

Exception in thread "main" java.io.IOException: Stream closed 
at java.util.zip.GZIPInputStream.ensureOpen(Unknown Source) 
at java.util.zip.GZIPInputStream.read(Unknown Source) 
at java.io.FilterInputStream.read(Unknown Source) 
at com.google.api.client.http.HttpResponse.parseAsString(HttpResponse.java:464) 
at Sample.main(Sample.java:45) 

Répondre

2

Il y a aussi les exemples de démarrage java Plus Disponible ici:

https://code.google.com/p/google-plus-java-starter/

Ces incluent un exemple de ligne de commande qui devrait fonctionner.

+0

peut-être que quelqu'un là-bas peut m'aider. J'ai essayé le démarreur plus java et une exception est levée (voir la question ci-dessus) – hannes

+0

Comme le lien dans cette réponse est maintenant obsolète, les lecteurs peuvent souhaiter suivre le [Java Quickstart] (https://developers.google.com/google -apps/calendar/quickstart/java) qui a un exemple de programme de travail. – mleonard

4

Eh bien, la réponse simple à votre problème est sur cette cause:

Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest 

Java Runtime est à la recherche de HttpServletRequest classe et ne peut pas trouver dans le chemin de classe.

HttpServletRequest ne peut être trouvé que dans le framework Java EE (framework Servlet) et ne peut être invoqué que via un Web Container/Application Server (puisqu'il s'agit d'une servlet). Ce que vous essayez de faire est de faire une danse OAuth 2, et dans la danse, le fournisseur de service (le serveur à qui vous avez envoyé une requête) fait une redirection HTTP vers votre application Web. Ce que j'essaie de dire, c'est que la danse OAuth doit être faite comme une application web. Pour exécuter votre Sample en mode autonome, vous exécuterez essentiellement une servlet en dehors du conteneur Web. Cela signifie essentiellement que vous devrez écrire une couche HTTP qui écoute port, traduire les protocoles HTTP dans HttpServletRequest et être en mesure de recevoir HttpServletResponse et de remplir la réponse HTTP (voir related SO question).

Je ne sais pas comment le lien de l'exemple que vous avez fourni a été exécuté, mais je suis sûr qu'un conteneur de servlets a été utilisé (probablement par un test?)

Bonne chance! :-)

+0

Merci pour votre réponse. Eh bien, j'essaie d'écrire une application de bureau qui devrait obtenir les données de mon compte Google Plus. J'ai essayé plusieurs méthodes maintenant, mais laquelle est la bonne? Il y avait un échantillon, qui est maintenant obsolète. Voir ici: http://code.google.com/p/google-api-java-client/wiki/OAuth2Draft10 – hannes

+0

Il existe également un [exemple non obsolète] (https://code.google.com/p/google -api-java-client/wiki/OAuth2 # Installed_Applications). –

+1

Les classes manquantes doivent faire partie de [google-api-java-client] (https://code.google.com/p/google-api-java-client/wiki/Setup). –

Questions connexes