Why am I getting a 400 response code?

2019-08-07 01:32发布

问题:

I am trying to get some acquaintance in using facebook API using Java (restfb). I am trying out the following code.

public class FBJava {

    private String API_Key = "xxxxxx";
    private String API_Secret = "xxxxxxxx";

    public String firstReq = "https://graph.facebook.com/oauth/authorize?client_id="+API_Key+"&" +
            "redirect_uri=http://www.facebook.com/connect/login_success.html& scope=publish_stream,offline_access,create_event";
    public String secondReq = "https://graph.facebook.com/oauth/access_token?client_id="+API_Key+"" +
            "&redirect_uri=http://www.facebook.com/connect/login_success.html&client_secret="+API_Secret+"&code=";


    public static void main(String[] args) throws IOException {
        FBJava fb = new FBJava();

        System.out.println(fb.firstReq);
        URL request = new URL(fb.firstReq);

        HttpURLConnection conn = (HttpURLConnection) request.openConnection();
        conn.connect();

        int code = conn.getResponseCode();
        System.out.println(code);

    }
}

When I run the firstReq string in the browser manually, it is redirecting me to the correct page. But when I check the response code I am getting a 400 which means that its a bad request. I want to know why does it respond differently when I try to run it through the program. I know I am doing something wrong, but want to know what is the mistake and why is it occurring? Any kind of insight in this matter would be appreciated.

回答1:

There is an error in the firstReq url. It contains a whitespace character between "& scope". Try this (I just removed the whitespace):

  public String firstReq = "https://graph.facebook.com/oauth/authorize?client_id="+API_Key+"&" +
    "redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_stream,offline_access,create_event";