Hello!
I get the error
com.google.gdata.util.AuthenticationException: Unknown authorization
header
at
com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:
600) ~[gdata-core-1.0.jar:na]
at
com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:
563) ~[gdata-core-1.0.jar:na]
at
com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:
552) ~[gdata-core-1.0.jar:na]
at
com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:
530) ~[gdata-core-1.0.jar:na]
at
com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:
535) ~[gdata-core-1.0.jar:na]
when trying to access the Google Calendar data via their API.
Here is what happens before that error.
1) I authenticate with Google:
final AccessTokenResponse response =
new GoogleAuthorizationCodeGrant(httpTransport,
jsonFactory,
clientId, clientSecret, authorizationCode,
redirectUrl).execute();
final GoogleAccessProtectedResource accessProtectedResource =
new GoogleAccessProtectedResource(
response.accessToken, httpTransport, jsonFactory,
clientId, clientSecret,
response.refreshToken);
LOGGER.debug("response.accessToken: {}", response.accessToken);
this.oauthAccessToken = response.accessToken;
...
2) I read some data via the tasks API:
this.service =
new Tasks(httpTransport, accessProtectedResource,
jsonFactory);
this.service.setApplicationName(this.applicationName);
This seems to work.
3) Then I try to read data from the Google Calendar API:
final OAuthHmacSha1Signer signer = new
OAuthHmacSha1Signer();
final GoogleOAuthParameters oauth = new
GoogleOAuthParameters ();
oauth.setOAuthConsumerKey("myapp.com");
oauth.setOAuthConsumerSecret(CLIENT_SECRET); // Client
secret from "Google API access" page, "Client secret" entry
oauth.setOAuthToken(this.oauthAccessToken); // Access
token from step 1
oauth.setOAuthTokenSecret(aAuthorizationCode);
// aAuthorizationCode is taken from the callback URL.
// For
http://myapp.com/oauth2callback?code=4/uy8Arb4bhRPwWYSr3QwKPt9lIZkt
// aAuthorizationCode is equal to "4/
uy8Arb4bhRPwWYSr3QwKPt9lIZkt" (without quotes)
oauth.setScope(SCOPE_CALENDAR); //
https://www.google.com/calendar/feeds/
final CalendarService calendarService =
new CalendarService(APPLICATION_NAME);
calendarService
.setOAuthCredentials(oauth, signer);
LOGGER.debug("calendarService: {}", calendarService);
final URL feedUrl =
new URL(
"http://www.google.com/calendar/feeds/
default/allcalendars/full");
final CalendarFeed resultFeed =
calendarService.getFeed(feedUrl,
CalendarFeed.class);
At the last line (calendarService.getFeed...) the aforementioned
exception occurs.
I have following questions:
1) Is my call
oauth.setOAuthConsumerKey
correct?
I. e. is the "consumer key" equal to "Product name" in the Google API
console, or to "Client ID" field (value is something like
42912397129473.apps.googleusercontent.com)
2) Is the setOAuthTokenSecret correct? I. e. is it the code that I
get, when Google redirects the user back to my app?
3) If questions 2 and 3 were answered with yes, what else can be the
cause of my problem?
Thanks
Dmitri
P. S.: Previously, I could access Google calendar with simple access
(i. e. with Google user name and password). However, this is not an
option now because users of my app will not want to give away their
Google password.
P. P. S.: You can earn StackOverflow reputation points by answering
the question there:
http://stackoverflow.com/questions/6550143/google-calendar-api-and-oauth-problem
--
You received this message because you are subscribed to the Google
Groups "Google Calendar Data API" 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://code.google.com/apis/calendar/community/forum.html