Unknown authorization header - Error 401
I am accessing Google Spreadsheet feeds using HMAC-SH1 sign. My Code is :
GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oau开发者_如何学GothParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
oauthParameters.setScope("https://spreadsheets.google.com/feeds/");
oauthParameters.setOAuthType(OAuthParameters.OAuthType.THREE_LEGGED_OAUTH);
oauthParameters.setOAuthToken(request.getSession().getAttribute("oauth_token").toString());
oauthParameters.setOAuthTokenSecret(request.getSession().getAttribute("oauth_token_secret").toString());
GoogleService googleService = new GoogleService("wise", "searceapps-searcegadget2-1");
googleService.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());
URL feedUrl = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full/");
SpreadsheetFeed resultFeed = googleService.getFeed(feedUrl, SpreadsheetFeed.class);
But, I am getting the error :
Oauth.requestServlet doGet: null com.google.gdata.util.AuthenticationException: OK Unknown authorization header
Unknown authorization header
Error 401
at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:600) at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:563) at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:552) at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:530) at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:535) at com.google.gdata.client.Service.getFeed(Service.java:1135) at com.google.gdata.client.Service.getFeed(Service.java:998) at com.google.gdata.client.GoogleService.getFeed(GoogleService.java:631) at com.google.gdata.client.Service.getFeed(Service.java:1017) at Oauth.accessFeeds.access(accessFeeds.java:74)
What is the problem with this ?
I suspect that the server is sending a "401 Unauthorized" response with a WWW-Authenticate header that the client code doesn't recognize. It may even be sending no WWW-Authenticate header at all ... vide the "null" in the exception message.
(The latter is a violation of the HTTP 1.1 specification. A 401 response is required to have a WWW-Authenticate header that the client uses to decide how to authenticate. Refer to the spec for details.)
So why might this be happening talking to a Google feed? Perhaps you've configured your client with the wrong URL? Perhaps your client is trying to connect via some poorly designed proxy?
See Android Google Calendar Authorization Problem. Google is doing something different with the calendar feeds, redirecting with a new 'gsessionid' parameter in the querystring; may be the same problem with spreadsheet.
精彩评论