1

我正在开发一个 Java 应用程序,我正在使用 Java 中的 google gdata 实现 3-legged OAuth。此应用程序已在 Google App Engine 上注册。在第一阶段,我成功获得了未经授权的请求令牌。我将该令​​牌存储在会话中并使用 createUserAuthorizationUrl(oauthParameters) 创建一个链接。然后单击链接,它将我重定向到“授予访问页面”。

现在,即使我授予访问权限,它也不会显示此页面。但是,它会将我重定向到我的回调 url。然而,这似乎是正确的。但是,它也不会在My Account下添加条目。在这里,我将 oauth_token 存储在会话中。

重定向时,该页面的 url 包含 oauth_token 和 oauth_verifier,两者都包含!现在,在这个回调 url 上,我有一个提交按钮并将操作设置为 accessTokenServlet.java。这个servlet的代码如下:

现在我正在发送请求以获取访问令牌。我的代码是:

            GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
            oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
            oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
            oauthParameters.setOAuthType(OAuthParameters.OAuthType.THREE_LEGGED_OAUTH);

            GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthHmacSha1Signer());

            oauthParameters.setOAuthToken(request.getSession().getAttribute("oauth_token").toString());
            oauthParameters.setOAuthTokenSecret(request.getSession().getAttribute("oauth_token_secret").toString());

            try {
                String accessToken = oauthHelper.getAccessToken(oauthParameters);
                out.println("Access Token : " + accessToken);
            } catch (OAuthException e) {
                //System.out.print("Response Status : " + response.getStatus());
                out.println("Exception : ");
                e.printStackTrace();
                return;
            }

单击提交按钮时,它会打印“访问令牌:”并且什么都没有!没有令牌返回!

我在授权请求令牌本身的阶段出错了。但是,我没有得到,产生了什么问题?

4

1 回答 1

0

您链接到的带有验证器的页面只有在您传入 anoauth_callback时才会出现oob——这表明您将把验证器移到带外。我强烈建议不要使用oob除调试以外的任何东西。相反,您应该设置回调 URL 并从查询字符串中获取验证程序。

在上面的代码中,我没有看到在 OAuth 参数中设置验证程序的任何内容,因此这可能是您的问题。您也没有在错误处理方面做太多事情,这是 OAuth 流程中非常重要的一部分——例如,一旦您开始工作,请尝试取消 OAuth 流程并查看您的应用程序如何处理它。

只有在您完全完成该过程并获得升级的访问令牌后,您才会在您的已发行令牌列表中看到该条目。

于 2011-02-01T20:24:09.900 回答