SilverHoodCorp / gdata-java-client

Automatically exported from code.google.com/p/gdata-java-client
Apache License 2.0
0 stars 0 forks source link

WorksheetEntry.getListFeedUrl returns ?xoauth_requestor_id=user@domain.com in OAuthCredentials context: problem with SpreadsheetService.query(myQuery, ListFeed.class) #296

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?

Hello everyone,
It seems the feed returned by WorksheetEntry.getListFeedUrl in OAuthCredentials 
context, changed few days ago (nice cool feature).
Unfortunately, it seems to be incompatible with 
SpreadsheetService.query(myQuery, ListFeed.class).

1.
Until 16th of july (day of my last work), WorksheetEntry.getListFeedUrl 
returned:
https://spreadsheets.google.com/feeds/list/<my-spreadsheet-id>/<my-sheet-id>/pri
vate/full

As I work in OAuthCredentials context, I use ListQuery to define some 
parameters and to add 'xoauth_requestor_id' definition

ListQuery oQuery = new ListQuery(oUrlFeed);
oQuery.addCustomParameter(new Query.CustomParameter("xoauth_requestor_id", 
vCurrentUserEmail));
oQuery.setMaxResults(10);
oQuery.setSpreadsheetQuery("MySpecialRequest");
ListFeed oFeed = oMyService.query(oQuery, ListFeed.class);

oQuery.getUrl returned:
https://spreadsheets.google.com/feeds/list/<my-spreadsheet-id>/<my-sheet-id>/pri
vate/full?max-results=10&xoauth_requestor_id=user%40domain.com&sq=myspecialreque
st

2.
Since the 24th of july (day I restarted to work on my project), 
WorksheetEntry.getListFeedUrl returns:
https://spreadsheets.google.com/feeds/list/<my-spreadsheet-id>/<my-sheet-id>/pri
vate/full?xoauth_requestor_id=user@domain.com
(?xoauth_requestor_id=user@domain.com was added automatically: cool!)

The problem is the previous code, now returns:
https://spreadsheets.google.com/feeds/list/<my-spreadsheet-id>/<my-sheet-id>/pri
vate/full?xoauth_requestor_id=user@domain.com?max-results=10&xoauth_requestor_id
=user%40domain.com&sq=myspecialrequest

3.
If I delete the 'xoauth_requestor_id' definition in the ListQuery
(this line: oQuery.addCustomParameter(new 
Query.CustomParameter("xoauth_requestor_id", vCurrentUserEmail));)
there is still a double query sign '?' in the Url:
https://spreadsheets.google.com/feeds/list/<my-spreadsheet-id>/<my-sheet-id>/pri
vate/full?xoauth_requestor_id=user@domain.com?max-results=10&sq=myspecialrequest

What is the expected output? What do you see instead?
expected output:
https://spreadsheets.google.com/feeds/list/<my-spreadsheet-id>/<my-sheet-id>/pri
vate/full?xoauth_requestor_id=user@domain.com&max-results=10&sq=myspecialrequest

instead:
https://spreadsheets.google.com/feeds/list/<my-spreadsheet-id>/<my-sheet-id>/pri
vate/full?xoauth_requestor_id=user@domain.com?max-results=10&sq=myspecialrequest

What version of the product are you using? On what operating system?
Eclipse Java EE IDE for Web Developers.
Version: Helios Release
Build id: 20100617-1415

JDK 1.6.0_20

GWT 2.0.4
GData 1.41.2 (try with 1.41.4 but no better results)
GAE 1.3.5

Windows XP

Please provide any additional information below.

Find below my code in the context of use:

    GoogleOAuthParameters oOAuthParameters = new GoogleOAuthParameters();
    oOAuthParameters.setOAuthConsumerKey(MyConstants.OAUTH_CONSUMER_KEY);
    oOAuthParameters.setOAuthConsumerSecret(MyConstants.OAUTH_CONSUMER_SECRET);
    oOAuthParameters.setOAuthType(OAuthParameters.OAuthType.TWO_LEGGED_OAUTH);
    oOAuthParameters.setOAuthTimestamp(OAuthUtil.getTimestamp());
    OAuthHmacSha1Signer oSigner = new OAuthHmacSha1Signer();

    SpreadsheetService oMyService = new SpreadsheetService (MyConstants.SERVICE_NAME_PERFSHEET);
    oMyService.setOAuthCredentials(oOAuthParameters, oSigner);
    oMyService.useSsl();

    String vCurrentUserEmail = MyConstants.TEST_USER_ID_DOMAIN;

    URL oUrlFeed = new URL(MyConstants.GAPPS_URL_SHEET_BY_ID);

    WorksheetFeed oWrkSheetsFeed = oMyService.getFeed(oUrlFeed, WorksheetFeed.class);

    for (WorksheetEntry oWrkSheet : oWrkSheetsFeed.getEntries()) {

        oUrlFeed = oWrkSheet.getListFeedUrl();

        ListQuery oQuery = new ListQuery(oUrlFeed);
        oQuery.addCustomParameter(new Query.CustomParameter("xoauth_requestor_id", vCurrentUserEmail));
        oQuery.setMaxResults(10);
        oQuery.setSpreadsheetQuery(MyConstants.MY_QUERY);

        ListFeed oFeed = oMyService.query(oQuery, ListFeed.class);

Thanks for your great job and sorry for my english.
DP

Original issue reported on code.google.com by denys.po...@gmail.com on 25 Jul 2010 at 11:40