我正在编写一个带有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命令什么都不做(显然)。
我做错了什么?我忘记了什么吗?这段代码几乎是直接从本论坛提出的类似问题中复制出来的,但我无法让它发挥作用。
答案 0 :(得分:1)
这次很容易,但需要很长时间才能搞清楚。
函数的输出不应该是String而是Response:
public String inOk(
重定向命令应如下所示:
return Response.seeOther(uri).build();
现在它有效。