[英]Get Cover Photo using Facebook API
在我的Android應用程序中,我試圖從他的Facebook帳戶獲取用戶的封面照片。
我可以使用下面的代碼獲取個人資料圖片。
profilePicUrl = new URL("http://graph.facebook.com/" + userId + "/picture?type=large");
profilePicBmp = BitmapFactory.decodeStream(profilePicUrl.openConnection().getInputStream());
該文檔指定了以下用於檢索封面照片。
用戶的封面照片(必須使用fields = cover參數明確請求)
需要access_token
返回:字段數組id,source和offset_y
因此,JSON響應的結構將是這樣的。
{
"cover": {
"cover_id": "10151008748223553",
"source": "http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash4/s720x720/391237_10151008748223553_422785532_n.jpg",
"offset_y": 0
},
"id": "19292868552"
}
我是Facebook Graph API的新手,因此對如何解決這個問題知之甚少。
我試過這個coverPicUrl = new URL("http://graph.facebook.com/" + userId + "/cover?type=large");
還有這個coverPicUrl = new URL("http://graph.facebook.com/" + userId + "/fields=cover");
但我無法獲得用戶個人資料的封面圖片。
在線搜索也沒有取得任何豐碩成果。
任何幫助確實會受到贊賞。
謝謝!
“source”標記(JSONObject)嵌套在另一個JSONObject(“cover”標記)中。 要解析此結果,您必須使用以下內容:
JSONObject JOSource = JOCover.optJSONObject("cover");
String coverPhoto = JOSource.getString("source");
JOCover
使用的JOCover
假定您已經有一個JSONOBject (JOCover)
來解析根。 您可以在自己的位置替換自己的JSONObject
。
無法直接訪問“source”標記,因為它嵌套在“cover”標記中。 你將不得不使用“ .optJSONObject("cover")
”。 我見過人們使用.getString
而不是.optJSONObject
但我從未使用它。 選擇適合你的方法。
編輯
根據您對使用Graph API的解決方案的要求,我正在編輯早期的解決方案並將其替換為Graph API解決方案。
最好在AsyncTask
,在doInBackground
使用此代碼:
String URL = "https://graph.facebook.com/" + THE_USER_ID + "?fields=cover&access_token=" + Utility.mFacebook.getAccessToken();
String finalCoverPhoto;
try {
HttpClient hc = new DefaultHttpClient();
HttpGet get = new HttpGet(URL);
HttpResponse rp = hc.execute(get);
if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String result = EntityUtils.toString(rp.getEntity());
JSONObject JODetails = new JSONObject(result);
if (JODetails.has("cover")) {
String getInitialCover = JODetails.getString("cover");
if (getInitialCover.equals("null")) {
finalCoverPhoto = null;
} else {
JSONObject JOCover = JODetails.optJSONObject("cover");
if (JOCover.has("source")) {
finalCoverPhoto = JOCover.getString("source");
} else {
finalCoverPhoto = null;
}
}
} else {
finalCoverPhoto = null;
}
} catch (Exception e) {
// TODO: handle exception
}
我已經測試了這個解決方案並且完美地工 您必須向活動所需的基本URL添加任何添加fields
。 為了測試,我只使用fields=cover
在onPostExecute
,做你的事情來顯示封面圖片。 希望這可以幫助。
注意 :使用Facebook API和端點https://graph.facebook.com/me?fields=cover
獲取封面照片不再適用於2014年12月20日。
應該給出以下回應:
{
"cover": {
"cover_id": "10151008748223553",
"source": "http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash4/s720x720/391237_10151008748223553_422785532_n.jpg",
"offset_y": 0
},
"id": "19292868552"
}
但現在它只是給用戶的id
:
{
"id": "19292868552"
}
使用Graph Tool explorer 2.2使用me?fields=cover
驗證了這一點。
你已經覆蓋了照片Url只是從Json數組中讀取了String,從那個String你可以得到封面照片。 這是封面照片網址
"source": "http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash4/s720x720/391237_10151008748223553_422785532_n.jpg",
像這樣你可以得到Json對象的Image Url。
String cover_photo = JsonObject.getString("source");
我在我的應用中實現了類似的功能。 我是這樣做的,使用FQL:
String cover_photo = jsonObj.getJSONObject("pic_cover").getString("source");
這使得url成為封面照片,因為source
標簽嵌套在pic_cover
對象中,然后可以使用像Universal Image Loader這樣的庫將其設置為ImageView
object.getJSONObject("cover").getString("source")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.