如何从OAuth回调中获取文本数据?

时间:2013-06-20 19:05:54

标签: java oauth box-api

当我尝试获取启动经过身份验证的客户端所需的授权代码时,我遇到了响应问题。响应出现(至少对我来说)是某​​种二进制数据(其中有一个或两个可识别的字符串片段),但我不知道如何处理它。 API的'hello world'程序中的代码似乎是将这些数据解析为一个字符串,但是当我尝试它时,它会失败,因为它不是预期的格式。

这是根据'Hello World'程序(来自方框api github wiki)改编而来here以显示问题所在。

import java.awt.Desktop;
import java.io.*;
import java.net.*;

public class HelloBox {
    public static final int socket_port = 4000;
    public static final String
        redirect_uri = "https://localhost:" + socket_port,
        client_id = /* [...] */, client_secret = /* [...] */;

    public static void main(String[] args) throws Exception{
        Desktop.getDesktop().browse(URI.create(
            "https://www.box.com/api/oauth2/authorize?" +
            "response_type=code" +
            "&client_id=" + client_id +
            "&redirect_uri=" + redirect_uri));

        ServerSocket serverSocket = new ServerSocket(socket_port);
        Socket socket = serverSocket.accept();
        BufferedReader in = new BufferedReader(
            new InputStreamReader(socket.getInputStream()));

        PrintWriter out = new PrintWriter(new FileWriter("output.txt"));

        for(int idx = 0; idx < 4; idx++){
            String line = in.readLine();
            System.out.println(line);
            out.println(line);
        }

        //[... closing all the streams and sockets ...]
    }
}

第四行之后的所有行都只是null,这就是为什么我在四行之后停止了它。

您可以在我的output.txt文件here中查看结果。我的电脑拒绝粘贴字符串,因此我无法在问题中包含它。我已经尝试用十六进制编辑器检查输出,但我看不到任何明显的模式。 (偶尔NULL分隔的东西爆发?)

无数的Google搜索都没有显示出与此问题相关的任何内容,而且Javadoc和API教程在这里都没有用。

我该如何处理这个问题?如果我的代码有误,请告诉我如何纠正它。

编辑: 所以我尝试用{/ 1>替换socketserverSocket

SSLServerSocket serverSocket = (SSLServerSocket) SSLServerSocketFactory.getDefault().createServerSocket(socket_port);
SSLSocket socket = (SSLSocket) serverSocket.accept();

但现在我要了 javax.net.ssl.SSLHandshakeException: no cipher suites in common在它首次尝试从流中读取的行。{/ p>

0 个答案:

没有答案