有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何通过外部java代码访问需要Oauth身份验证的RESTAPI

我正在向RESTAPI发出POST请求,该请求最初要求用户登录,并且正在使用oauth登录。我用java代码完成所有这些,并充当第三方RESTAPI的客户机。 我已经用java为此创建了以下代码,但每次我发出请求时都会收到内部服务器错误。我的主要目标是从登录请求中获取cookie,以便在接下来的调用中使用它

代码:

URL Loginurl = new URL(strURL);
        HttpURLConnection conn = (HttpURLConnection) Loginurl.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setRequestProperty("Accept", "application/json");
        conn.setDoInput(true);
        conn.setUseCaches(false);
        conn.setAllowUserInteraction(false);
        conn.setRequestProperty("Content-Language", "en-US");
                BufferedWriter out = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
        out.write(strLoginString);
        out.close();
                int responseCode=conn.getResponseCode();
        if(responseCode==200)
        {
            cookie = conn.getHeaderField("Set-Cookie");
            return cookie;}

共 (1) 个答案

  1. # 1 楼答案

    您需要了解OAuth是如何工作的。我假设您使用的是OAuth2,OAuth中没有会话。取而代之的是一种称为访问令牌的东西(在交换授权令牌后获得,授权令牌本身是通过与身份提供者成功验证资源所有者而获得的)

    OAuth涉及4个方面:客户端、资源所有者、资源提供者、资源服务器。要访问资源(api),您需要资源所有者(用户)通过身份提供程序(oauth api)进行身份验证。您是客户机,必须使用OAuth服务器和用户浏览器来完成身份验证。您不应该试图充当中间人,通过身份提供者进行用户身份验证。一旦identity provider对用户进行了身份验证,它将使用身份验证令牌将用户重定向回您的端点,然后您可以使用访问令牌进行交换以执行实际的api调用

    我建议在网站Oauth.net上阅读OAuth