0

Facebook SDK を使用して Facebook のカバー写真を取得する方法を探しています。JSONメソッドを使用していると思いますが、その方法が本当にわかりません。

使ってみた

    JSONObject jsonObject = user.getInnerJSONObject();

この

URL url = new URL(my_url);
JSONObject obj = url.getContent();

プロフィール写真は入手しましたが、カバー写真を入手する必要があります。

4

1 に答える 1

1

リクエストの場合:

https://graph.facebook.com/me?fields=cover&access_token=YOUR_TOKEN

JSON 応答:

{
  "cover": {
    "id": "XXXXXXXXX", 
    "source": "URL_OF_COVER_PHOTO_IMAGE", 
    "offset_y": 50
  }, 
  "id": "XXXXXXXXX"
}

それがあなたを助けることを願っています

JSON コンテンツとして解析するには、次のクラスを使用します。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONParser {

static InputStream is = null;
static JSONObject jObj = null;
static String json = "";

// constructor
public JSONParser() {

}

public JSONObject getJSONFromUrl(String url, ArrayList<NameValuePair> postParameters) {

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        //add parameters to the post request

        httpPost.setHeader("Content-type", "application/json;charset=utf8");
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();

        is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

}

次に、応答を JSON 文字列として取得します。JSONObject を使用すると、必要なフィールド (カバー URL を持つフィールド) のみを取得できます。リンクを取得したら、URL からビットマップをダウンロードして表示します。

于 2013-10-13T22:05:07.140 に答える