Facebook 的错误跟踪器中有两个关于此的错误报告:
https ://developers.facebook.com/bugs/110563582419837和https://developers.facebook.com/bugs/202119973248747
核心原因是照片作为用户生成的照片附加到Open Graph操作,而不是通过常规的照片上传 API。
因此,常规照片权限不会授予对它们的访问权限,并且您需要用户专门允许您访问发布操作的应用程序的 Open Graph 活动。接受上面的错误报告是因为这似乎是对用户生成的照片的操作的疏忽,但也可能是设计使然,在这种情况下,我在下面概述的解决方法将是唯一支持的这样做的方法:
如果您特别需要为用户请求 Instagram(或其他 Open Graph 照片应用)照片,您可以请求访问该应用发布的操作的权限。
对于 Instagram 照片,您可以通过请求user_actions:instapp
权限来执行此操作,一旦完成,Instagram 照片相册将不再显示为空,并且 Instagram 活动将出现在feed
连接中。
要找出任意应用程序的命名空间,请访问https://graph.facebook.com/<APP ID>
并查找该namespace
字段,
例如对于 instagram,调用https://graph.facebook.com/124024574287414/?fields=id,namespace
返回:
{
"id": "124024574287414",
"namespace": "instapp"
}
使用, ,权限/feed
检索到的来自我自己的连接的示例照片是:read_stream
user_photos
user_actions:instapp
{
"data": [
{
"id": "[SNIPPED]",
"from": {
"name": "[SNIPPED]",
"id": "[SNIPPED]"
},
"picture": "[SNIPPED]",
"link": "https://www.facebook.com/photo.php?fbid=[SNIPPED]",
"icon": "https://fbstatic-a.akamaihd.net/rsrc.php/v2/yb/x/StEh3RhPvjk.gif",
"privacy": {
"value": ""
},
"type": "photo",
"object_id": "[SNIPPED]",
"application": {
"name": "Instagram",
"namespace": "instapp",
"id": "124024574287414"
},
"created_time": "2013-01-07T17:33:04+0000",
"updated_time": "2013-01-07T17:33:04+0000",
"comments": {
"count": 0
}
},
我还可以使用/photos
相同的权限访问我的“Instagram 照片”相册的连接,并且可以访问所有 Instagram 的“执行”操作(即照片)/me/instapp:take