Java 未知授权标头-错误401

Java 未知授权标头-错误401,java,oauth,request-headers,Java,Oauth,Request Headers,我正在使用HMAC-SH1标志访问谷歌电子表格提要。我的代码是: GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters(); oauthParameters.setOAuthConsumerKey(CONSUMER_KEY); oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET); oauthParameters.

我正在使用HMAC-SH1标志访问谷歌电子表格提要。我的代码是:

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) 在 accessFeeds.access(accessFeeds.java:74)


这有什么问题吗?

我怀疑服务器正在发送一个“401 Unauthorized”响应,其标题是客户端代码无法识别的。它甚至可能根本不发送WWW认证头。。。请参阅异常消息中的“null”

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



那么,为什么会发生这种情况呢?也许您用错误的URL配置了客户端?也许您的客户正试图通过设计糟糕的代理进行连接?

请参阅。谷歌正在对日历提要做一些不同的事情,在querystring中使用一个新的“gsessionid”参数重定向;电子表格可能也存在同样的问题。

根据此处指定的信息:,我已授权客户端并已登录。由于我已在GAE上在线注册此应用程序,因此不可能再次出现错误的URL!即使是我指定的作用域和提要URL也是正确且有效的!嗯,我被难倒了。也许您应该使用wireshark或类似的工具来查看HTTP请求和响应真正包含的内容。你可以做的另一件事就是通过谷歌搜索来查找这个错误。哦!令人惊讶的是,从一个全新的项目,它的工作!但是,这里的访问令牌从一开始就处于会话中。在这个应用程序中,我从Google数据存储中获取访问令牌,这是以前存储的!Google Jump目前还有一个尚未解决的问题: