java rest jersey重定向为oauth2无法正常工作

时间:2014-07-15 11:30:32

标签: java rest oauth-2.0 jersey jersey-2.0

我正在编写一个带有jersey 2的java rest模块,其第一步是从外部Oauth2服务器获取用户凭据。当我尝试将用户重定向到身份验证服务时,我看到网址已正确生成,但它仍保留在该位置。这是我正在执行的代码:

  @GET
  public String inOk(
          @DefaultValue("") @QueryParam("code") String inoauthcode)
  {
      String oauthserv = "https://xxx";
      String oauthclientid = "xxx";
      String oauthsecret = "xxxx";
      String oauthredirect = "http://myapp/url";
      String oauthurl = "xxxx"; 
      String redurl = "http";
      String authurl = "http";

        if (inoauthcode.equals("")) {
            redurl = oauthserv + "?response_type=code&client_id=" + oauthclientid + "&redirect_uri=" + oauthredirect;
            URI uri = UriBuilder.fromUri(redurl).build();
            Response.temporaryRedirect(uri);
      } 
        authurl = oauthurl + inoauthcode +  "&redirect_uri=" + oauthredirect + "&client_id=" + oauthclientid + "&client_secret=" + oauthsecret;
     ...REST OF CODE ...
  }

如果我将生成的url写入屏幕它运行正常但是temporaryRedirect命令什么都不做(显然)。

我做错了什么?我忘记了什么吗?这段代码几乎是直接从本论坛提出的类似问题中复制出来的,但我无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

这次很容易,但需要很长时间才能搞清楚。

函数的输出不应该是String而是Response:

 public String inOk(

重定向命令应如下所示:

return Response.seeOther(uri).build();

现在它有效。