0

「Facebookでログイン」ボタンのサーバー側を作ろうとしています。

私は access_token の取得に成功しましたが、url を呼び出してユーザー情報を含む json オブジェクトを受け取ると、応答本文のコンテンツは単純に "True" のみを返します。

最悪なのは、同じブラウザ ウィンドウに URL を貼り付けると、ブラウザが応答本文に正しい json テキストを表示することです。

それが原因で、サーバー側でこの呼び出しを行い、呼び出しを行うコードは次のとおりです。

String token_url = "https://graph.facebook.com/oauth/access_token?"
    + "client_id=" + app_id + "&redirect_uri=" + URLEncoder.encode(my_url, "UTF-8")
    + "&client_secret=" + app_secret + "&code=" + code;

String response = Util.sendGET(token_url, "GET", "application/json");

関数 sendGET は次のとおりです。

public static String sendGET (String pageUrl, String method, String contentType) {
    String pagecontent = "";
    try {
        String stuff = null;

        java.net.URL url = new java.net.URL(pageUrl);
        java.net.HttpURLConnection conn = (java.net.HttpURLConnection)url.openConnection();
        conn.setRequestMethod(method);
        conn.setRequestProperty("Content-Type", contentType);
        conn.setDoOutput(true); 
        conn.setUseCaches(true); 
        conn.setAllowUserInteraction(false);

        DataOutputStream printout = new java.io.DataOutputStream(conn.getOutputStream ());
        BufferedReader in = new java.io.BufferedReader(
                                        new InputStreamReader(conn.getInputStream())
                                    ); 
        while ((stuff = in.readLine()) != null) {
            pagecontent += stuff; 
        }
        in.close(); 
        System.out.println("Page Content = " + pagecontent);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return pagecontent;
}

私が言ったように、pagecontent の結果は「真」の文字列ですが、de token_url コンテンツをブラウザに貼り付けると、正しい json オブジェクトが表示されます。

4

0 に答える 0