Java 未知授权标头-错误401
我正在使用HMAC-SH1标志访问谷歌电子表格提要。我的代码是: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.
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目前还有一个尚未解决的问题: