开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜