GWT-gdata authentification
Question
J'écris une application avec GWT et je l'ai trouvé sur internet qu'il ya une bibliothèque pour utiliser des fonctionnalités facilement Gdata. En particulier, je dois utiliser l'intégration avec Google Calendar. J'ai suivi le guide officiel sur le site GWT-gdata faire l'authentification ( http: / /code.google.com/p/gwt-gdata/wiki/GettingStarted ), mais malheureusement, je suis une erreur. Ceci est l'erreur:
17:59:12.463 [ERROR] [testmappa] Unable to load module entry point class testMappa.client.TestMappa (see associated exception for details)
com.google.gwt.core.client.JavaScriptException:
(TypeError): $wnd.google.accounts is undefined
fileName: http://127.0.0.1:8888
lineNumber: 29
stack: ("http://www.google.com/calendar/feeds/")@http://127.0.0.1:8888:29
connect("http://127.0.0.1:8888/TestMappa.html?gwt.codesvr=127.0.0.1:9997","`gL1<a3s4B&Y{(Ci","127.0.0.1:9997","testmappa","2.0")@:0
((void 0),"testmappa","http://127.0.0.1:8888/testmappa/")@http://127.0.0.1:8888/testmappa/hosted.html?testmappa:264
z()@http://127.0.0.1:8888/testmappa/testmappa.nocache.js:2
(-2)@http://127.0.0.1:8888/testmappa/testmappa.nocache.js:8
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:195)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.accounts.client.User.login(User.java)
at testMappa.client.TestMappa.onModuleLoad(TestMappa.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:369)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:185)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:380)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)
at java.lang.Thread.run(Thread.java:637)
Je ne suis pas en mesure de comprendre la raison de cette erreur. Mon code est tout simplement:
String scope = "http://www.google.com/calendar/feeds/";
User.login(scope);
Et pour autant que je sache, il devrait fonctionner comme il est. Je ne sais pas quoi faire et je suis ici pour demander comment résoudre ce problème et si je peux utiliser directement la bibliothèque java natif gdata, mais je crois que cette autre chose est impossible à faire pour le code GWT du côté client ( puisque le code va être converti en javascript).
Merci.
La solution
Les deux lignes de code ci-dessus devrait COPIÉES fait venir dans la méthode d'exécution comme celui-ci -
if (GData.isLoaded(GDataSystemPackage.CALENDAR)) { Window.alert("Package is loaded"); } else { GData.loadGDataApi("MyApiKey", new Runnable() { public void run() { String scope = "http://www.google.com/calendar/feeds/"; User.login(scope); //remaining code comes in here. you may create a new method //and call it from here. } }, GDataSystemPackage.CALENDAR); }
Si vous ne chargez pas le code api GData, vous êtes susceptible d'obtenir l'erreur javascript que vous avez collé.