我正在写一个应用程序,上传照片到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