我正在寫一個應用程序,上傳照片到Facebook。我沒有提供相冊ID,因此我的應用程序會創建相冊。Facebook圖形API - 獲取照片相冊ID
我的問題是:如何獲取照片上傳到的相冊ID?
當我GET
的照片信息專輯不存在於JSON這是我的希望。
我正在寫一個應用程序,上傳照片到Facebook。我沒有提供相冊ID,因此我的應用程序會創建相冊。Facebook圖形API - 獲取照片相冊ID
我的問題是:如何獲取照片上傳到的相冊ID?
當我GET
的照片信息專輯不存在於JSON這是我的希望。
這個問題一直在困擾我一段時間,但我想我已經破解了這個螺母。
專輯ID是隱藏在鏈接的價值,所以如果你有從圖形API光後的對象,就可以取回相冊ID是這樣的:
NSString *link = [item valueForKey:@"link"];
NSString *album_id = nil;
NSRange fRange = [link rangeOfString:@"set=a."];
if(fRange.location != NSNotFound) {
NSInteger firstPos = fRange.location + 6;
NSInteger endPos = [link rangeOfString:@"." options:NSLiteralSearch range:NSMakeRange(firstPos, 25)].location;
album_id = [[link substringWithRange:NSMakeRange(firstPos, endPos - firstPos)] copy];
}
它很可能都被剝奪一行代碼,但我認爲這更具可讀性。 爲了得到這張專輯信息的使用:
[facebook requestWithGraphPath:album_id andDelegate:delegate];
爲了讓所有的相冊內的照片使用:
[facebook requestWithGraphPath:[NSString stringWithFormat:@"%@/photos", album_id] andDelegate:delegate];
希望這可以幫助別人。
如果我正確理解你,你有照片ID但需要相冊ID。你可以嘗試使用the photo
FQL table用下面的查詢:
SELECT aid, pid FROM photo WHERE pid = '<your photo id>'
吉米Sawczuk的答案是接近,但不工作,因爲FQL照片表列aid
和pid
是REST/FQL API IDS,沒有圖形API的ID。
好在此表中的object_id
和album_object_id
列是可轉位(contrary to the documentation),所以這應該給你的專輯都休息/ FQL &圖形標識:
select aid, album_object_id from photo where object_id = ${GRAPH_PHOTO_ID}
在REST/FQL API一般object_id
領域響應是Graph API id(照片通知除外,它是Rest/FQL ID)。
重新HonkyHonk的回答是:不是所有的照片link
網址有set
參數;在這種情況下,我認爲你可以找到它的其他參數的REST/FQL API帶照片的身份證,然後使用REST/FQL API來獲取相冊ID:
(id << 32) | pid
2360873244068853905
id
,_
和pid
100002937903251_155052
這將有很大的幫助如果Facebook可以記錄一些關於兩種類型的ID。此外,圖形API照片模式應該包含相冊的圖形API ID。
link的'set'參數(如果存在)包含Graph API相冊ID。 – 2011-10-26 05:10:12
我也見過一些link鏈接,其中'set'的形式爲'。$ {ALBUMID}。$ {REST}'。哇,這很複雜。 – 2011-10-26 05:50:14
理查德·巴尼特的解決方案很適合我,我以此爲FQL查詢通過圖形API來獲取一個JSON響應就像我會爲任何其他圖形API查詢:
https://graph.facebook.com/fql?q=select+album_object_id+FROM+photo+WHERE+object_id='[PHOTOID]'
這將返回:
{
"data": [
{
"album_object_id": "10150531092908837"
}
]
}
然後,您可以使用訪問相冊ID:
<?php
$strPhotoAlbumID = $objFacebookAPI->data[0]->album_object_id;
?>
這是最乾淨的溶膠我發現在Facebook上不斷更改照片和相冊網址的格式,因此使用RegEx解析這些內容不會起到長期修復的作用。
這對我有用。謝謝@Seth – 2013-02-25 04:28:00
function get_album_id_by_album_name($album_name){//return array of data
$fql = 'SELECT aid, owner, name, object_id FROM album WHERE owner=me() and name="'.$album_name.'"';
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$fqlResult = $this->facebook->api($param);
return $fqlResult;
}
String albumID = "https://www.facebook.com/photo.php?fbid=192570127478130&set=a.135556629846147.24342.100001754323389&type=1";
albumID = albumID.split("&set=a.")[1];
albumID = albumID.split("\\.")[0];
System.out.println(albumID);
這是最簡單的方式獲得它:
這對我不起作用。 FB給我「無效的相冊ID」 – 2012-12-11 17:28:19
這種解決方案看起來很脆弱,但我不知道替代方案。這張照片本身沒有與其專輯的關聯真是太可惜了。 – 2011-10-12 22:32:01
現在這張專輯是一個您可以從照片對象訪問的字段 - 即?fields = album - 使用https://developers.facebook.com/tools/explorer上的Graph API Explorer獲取更多可添加的字段。 – 2013-07-28 11:23:32
這是什麼Facebook? – 2016-04-26 06:38:50