Version 1.10.1 is available here:
http://code.google.com/p/gwt-gdata/downloads/list

Bobby

On Aug 14, 4:53 am, Bobby <[email protected]> wrote:
> I may not be able to correct this IE bug, and it may not be desirable
> either since it isn't a good idea to have the GWT version introduce
> hacks onto the JS library in order to fix a bug - stuff like this is
> better off being corrected in the JS version directly. I'll add this
> as a defect and deal with it later, the workaround being to use a
> script reference to load the API.
>
> I'm starting to think about how to detach the GWT library from the JS
> api in the future. Here's what i'm seeing, in the JS API all GData
> operations (POST, PUT, DELETE) are sent as POST commands. A POST
> variable called HTTP-Method-Override can be used to specify the actual
> operation. Cross-domain POSTS aren't a problem, we can just create and
> submit a hidden form using some JavaScript.
>
> Since GData supports retrieving data in JSON format, we can use a
> JSONP approach to do cross domain reads - this is what the current JS
> API does.
>
> This means that in order to detach the GWT version from the JS
> libraries we have to:
> 1. identify the Atom schema for each data type, there are a few
> hundred classes.
> 2. provide a base implementation that can perform cross-domain POSTS
> and JSONP reads.
>
> I think #1 can be automated and #2 is sensitive but small.
>
> The end result will be a more GWT-optimizable API which can then grow
> at its own pace. The samples and unit tests wouldn't change
> significantly, if at all. We can still use overlay types to wrap
> around the JSON objects returned from GData. I've taken a closer look
> at the GData Java library and i don't think that the GWT and Java APIs
> will ever match because the GWT version will need to be callback-based
> whereas Java doesn't have this limitation.
>
> Anyway, just some thoughts.
>
> Bobby
>
> On Aug 14, 2:53 am, Bobby <[email protected]> wrote:
>
> > There are some quirks which are making it difficult to narrow down the
> > reason why AuthSub fails in IE. So far i know it only happens when
> > google.load is used with a callback, even when google.load is called
> > while the page is being loaded.
>
> > So something like the following:
> > <body>
> > <script>
> >     google.load("gdata", "1.10", myCallback);
> > </script>
> > <input type="button" value="login" onclick="google.accounts.user.login
> > ('scope-here')" />
> > </body>
>
> > Will always see the following behavior:
> > 1. User clicks to login.
> > 2. User is redirect to authorization page and clicks to authorize.
> > 3. User is redirected back to the original page, with a token appended
> > in the URL.
> > 4. Page doesn't consume the token in the URL (the correct behavior is
> > for the page to place the token in a cookie and remove the token from
> > the url).
> > 5. User clicks to login again.
> > 6. User gets redirected to authorization page again, and steps 3-6 are
> > repeated an arbitrary number of times.
> > 7. If, after reaching the authorization page a second time, the user
> > clicks the browser's back button, causing the browser to go back to
> > the page that contains the token in the url, the token is successfully
> > consumed and the user is successfully logged in. Go figure.
>
> > Why "backing" into the page causes GData to successfully consume the
> > token i have no idea - especially since refreshing the page at step 4
> > has no effect.
>
> > My guess is that when backing into the page IE will use a cached
> > version of the GData script, which is processed immediately and may
> > make the difference.
>
> > Bobby
>
> > On Aug 14, 1:37 am, Bobby <[email protected]> wrote:
>
> > > This was outside GWT. I'm trying to find the cause of the IE AuthSub
> > > issue outside of GWT first. Basically, when google.load() is called
> > > after the page has finished loading - such as from a button click,
> > > AuthSub doesn't succeed.
>
> > > Bobby
>
> > > On Aug 14, 12:17 am, Eric Ayers <[email protected]> wrote:
>
> > > > If you are calling JavaScript inside of a GWT JSNI function, you
> > > > should be using $wnd.google.load(...)
>
> > > > On Thu, Aug 13, 2009 at 11:55 PM, Bobby<[email protected]> wrote:
>
> > > > > This IE AuthSub issue is not because of the IFrame, the transferToken
> > > > > approach didn't make a difference.
>
> > > > > I tried placing the google.load('gdata', '1.10'); call in a button
> > > > > click event. Here's the code:
> > > > > <html>
> > > > > <body>
> > > > >    <img src="logo-small.png" />
> > > > >    <script type="text/javascript" src="http://www.google.com/jsapi";></
> > > > > script>
> > > > >    <script type="text/javascript">
> > > > >        function loadGData() {
> > > > >                google.load('gdata', '1.10');
> > > > >        }
> > > > >    </script>
> > > > >    <input type="button" value="Load GData" onclick="loadGData();" />
> > > > > </body>
> > > > > </html>
>
> > > > > If you try this, when you click "Load GData", the page is cleared and
> > > > > nothing really happens. If you look at the page source after clicking
> > > > > the button you see the following:
> > > > > <script src="http://www.google.com/uds/?file=gdata&v=1.10"; type="text/
> > > > > javascript"></script>
>
> > > > > This is what would happen if document.write was being used and would
> > > > > explain a few things.
>
> > > > > Eric, does your AjaxLoader module use google.load() from the jsapi?
>
> > > > > Bobby
>
> > > > > On Aug 13, 10:20 pm, Bobby <[email protected]> wrote:
> > > > >> By the way, i've finished porting the samples (70 of them) i'm
> > > > >> currently polishing and commenting the samples code.
>
> > > > >> I've added specialized Callbacks into the API, for example
> > > > >> BlogEntryCallback (extending AsyncCallback<BlogEntry>) - this meant
> > > > >> adding specialized methods for insert/update/delete, but makes for a
> > > > >> better API. There have been other changes and design choices as well.
>
> > > > >> In the Maps samples, the create/update features are not working
> > > > >> because of a KML-related defect which i might try to get around with
> > > > >> GWT:http://code.google.com/p/gmaps-api-issues/issues/detail?id=1585
>
> > > > >> Other than that i have a small list of items to wrap up (including
> > > > >> this IE issue) and some documentation to write, but nothing major and
> > > > >> i'm counting on having a download by the end of this week or next 
> > > > >> week
> > > > >> at the latest.
>
> > > > >> Bobby
>
> > > > >> On Aug 13, 9:46 pm, Bobby <[email protected]> wrote:
>
> > > > >> > The onModuleLoad is within an iframe, that's probably the cause. I
> > > > >> > think i can find a way around this. For example, i can add the
> > > > >> > following method to the GData module:
> > > > >> > GData.transferTokenOrSomething();
>
> > > > >> > This function would check the top frame for a token and append it 
> > > > >> > to
> > > > >> > the IFrame's location. I'll play around with this.
>
> > > > >> > Bobby
>
> > > > >> > On Aug 13, 9:29 pm, Bobby <[email protected]> wrote:
>
> > > > >> > > Another possible cause could be for example if, in the compiled 
> > > > >> > > GWT
> > > > >> > > app, the google.load call happens inside an IFrame.
>
> > > > >> > > Currently, with google.load being called from onModuleLoad,
> > > > >> > > google.accounts.user.login() causes the redirect to the Google
> > > > >> > > Accounts authorization page, but when it redirects back, with the
> > > > >> > > token in the URL (for example /HelloGData.html#tokenhere), the 
> > > > >> > > token
> > > > >> > > doesn't get consumed (in IE), and the authentication doesn't 
> > > > >> > > succeed.
>
> > > > >> > > If GWT is placing the onModuleLoad code inside an IFrame, then 
> > > > >> > > it may
> > > > >> > > cause the GData library to look for the token on the IFrame
> > > > >> > > window.location, instead of the top's window.location.
>
> > > > >> > > Bobby
>
> > > > >> > > On Aug 13, 9:16 pm, Eric Ayers <[email protected]> wrote:
>
> > > > >> > > > The gdata init shouldn't use document.write() - you should be 
> > > > >> > > > able to
> > > > >> > > > call it at any time.
>
> > > > >> > > > There is a tradeoff of using the AjaxLoader module - it does 
> > > > >> > > > add more
> > > > >> > > > delay than using the script version.  Fortunately, you can 
> > > > >> > > > code your
> > > > >> > > > app using AjaxLoader and then if you need the speedup, just 
> > > > >> > > > add the
> > > > >> > > > logic in your host page.  AjaxLoader will detect that the 
> > > > >> > > > jsapi is
> > > > >> > > > already there and bypass it.  You can add that check in your 
> > > > >> > > > version
> > > > >> > > > of GData.loadGDataApi() if you like.
>
> > > > >> > > > On Thu, Aug 13, 2009 at 9:11 PM, Bobby<[email protected]> 
> > > > >> > > > wrote:
>
> > > > >> > > > > In the GData JS library, in IE, AuthSub fails if 
> > > > >> > > > > google.load("gdata",
> > > > >> > > > > "1.10"); is asynchronous, after the page has finished 
> > > > >> > > > > processing. For
> > > > >> > > > > example, if i place the google.load("gdata", "1.10"); call 
> > > > >> > > > > within the
> > > > >> > > > > GWT onModuleLoad method, then AuthSub stops halfway.
>
> > > > >> > > > > To avoid this we can directly add the following at the top 
> > > > >> > > > > of the GWT
> > > > >> > > > > html page:
> > > > >> > > > >        <script type="text/javascript" 
> > > > >> > > > > src="http://www.google.com/jsapi";></
> > > > >> > > > > script>
> > > > >> > > > >        <script type="text/javascript">google.load("gdata", 
> > > > >> > > > > "1.10");</
> > > > >> > > > > script>
>
> > > > >> > > > > Or just use the auto-load feature of the JS API to collapse 
> > > > >> > > > > these two
> > > > >> > > > > into a single script load.
>
> > > > >> > > > > But this wouldn't make use of the AjaxLoader module and it 
> > > > >> > > > > means that
> > > > >> > > > > the GWT app will have to wait for the GData libraries to 
> > > > >> > > > > load before
> > > > >> > > > > rendering, etc, instead of doing something like the 
> > > > >> > > > > following:
>
> > > > >> > > > > public void onModuleLoad() {
> > > > >> > > > >    //render main app here
> > > > >> > > > >    GData.loadGDataApi(null, new Runnable() {
> > > > >> > > > >      public void run() {
> > > > >> > > > >        initialize();
> > > > >> > > > >      }
> > > > >> > > > >    });
> > > > >> > > > > }
>
> > > > >> > > > > I don't know the reason for this behavior but it could 
> > > > >> > > > > happen if the
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to