Gwt-gdata authentication
I'm writing an application with GWT and I found on the internet that there's a library to use easily gdata features. In particular I need to use the integration with Google Calendar. I followed the official guide on gwt-gdata site to do the authentication ( http://code.google.com/p/gwt-gdata/wiki/GettingStarted ) but unfortunately, I got an error. This is the error:
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)
I'm not able to understand the reason of this error. My code is simply:
String scope = "http://www.google.com/calendar/feeds/";
User.login(scope);
And as far as I know it should work as it is. I don't know what to do and I'm here to ask how to solve this problem and if I can directly use gdata native java library, but I believe this other thing is not possible to be done for client-side gwt code (since the code is going to be converted to javascript).
Thank you.
The two lines of code you pasted above should actually come within the run method like this -
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); }
If you don't load the GData api code, you are likely to get the javascript error that you pasted.
精彩评论