Facebook Graph API - 获取相册ID

jos*_*eym 12 facebook facebook-graph-api

我正在编写一个将照片上传到Facebook的应用程序.我没有提供相册ID,因此代表我的应用创建了相册.

我的问题是:如何获取照片上传到的相册ID?

当我GET的照片信息时,JSON中没有这张专辑,这是我的希望.

Ric*_*ett 9

Jimmy Sawczuk的答案很接近,但是因为FQL Photo表列aid并且pid是Rest/FQL API ID而不是Graph API ID而不起作用.

幸运的是,此表中的object_idalbum_object_id列是可索引的(与文档相反),因此这应该为您提供相册的Rest/FQL和Graph ID:

select aid, album_object_id from photo where object_id = ${GRAPH_PHOTO_ID}
Run Code Online (Sandbox Code Playgroud)

通常object_id,Rest/FQL API响应中的字段是Graph API id(照片通知除外,它是Rest/FQL id).

Re HonkyHonk的回答:并非所有的照片link网址都有set参数; 在这种情况下,我认为您可以从其他参数中找到Rest/FQL API照片ID,然后使用Rest/FQL API获取相册ID:

如果Facebook可以记录有关这两种类型的ID的内容,那将会有很大帮助.此外,Graph API Photo架构还应包含相册的Graph API ID.


小智 6

这是获得它的简单方法:


小智 4

这个问题也困扰了我一段时间,但我想我已经解决了这个问题。

相册 ID 隐藏在链接值中,因此如果您有来自 Graph 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];
}
Run Code Online (Sandbox Code Playgroud)

它可能全部被精简为一行代码,但我认为这更具可读性。要获取专辑信息,请使用:

[facebook requestWithGraphPath:album_id andDelegate:delegate];
Run Code Online (Sandbox Code Playgroud)

要获取相册中的所有照片,请使用:

[facebook requestWithGraphPath:[NSString stringWithFormat:@"%@/photos", album_id] andDelegate:delegate];
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助别人。

  • 如今,相册是您可以从照片对象访问的字段 - 即 ?fields=album - 使用 https://developers.facebook.com/tools/explorer 上的 Graph API Explorer 获取可以添加的更多字段。 (3认同)