1

我正在使用 HMAC-SH1 符号访问 Google 电子表格提要。我的代码是:

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
        oauthParameters.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);

但是,我收到错误:

Oauth.requestServlet doGet: null com.google.gdata.util.AuthenticationException: OK 未知授权标头

未知的授权标头

错误 401

在 com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:600) 在 com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:563) 在 com.google.gdata.client .http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:552) 在 com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:530) 在 com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest .java:535) 在 com.google.gdata.client.Service.getFeed(Service.java:1135) 在 com.google.gdata.client.Service.getFeed(Service.java:998) 在 com.google.gdata。 client.GoogleService.getFeed(GoogleService.java:631) 在 com.google.gdata.client.Service.getFeed(Service.java:1017) 在 Oauth.accessFeeds.access(accessFeeds.java:74)

这有什么问题?

4

2 回答 2

0

我怀疑服务器正在发送带有客户端代码无法识别的WWW-Authenticate标头的“401 Unauthorized”响应。它甚至可能根本没有发送 WWW-Authenticate 标头……参见异常消息中的“null”。

(后者违反了 HTTP 1.1 规范。401 响应需要有一个 WWW-Authenticate 标头,客户端使用该标头来决定如何进行身份验证。有关详细信息,请参阅规范。)


那么,为什么在与 Google 提要对话时会发生这种情况呢?也许您为客户端配置了错误的 URL?也许您的客户正试图通过一些设计不佳的代理进行连接?

于 2011-02-09T07:36:30.067 回答
0

请参阅Android Google 日历授权问题。谷歌正在对日历提要做一些不同的事情,在查询字符串中使用新的“gsessionid”参数进行重定向;电子表格可能是同样的问题。

于 2011-04-26T00:28:00.910 回答