Facebook 的错误跟踪器中有两个关于此的错误报告:
https://developers.facebook.com/bugs/110563582419837 和 https://developers.facebook.com/bugs/202119973248747
核心原因是照片以User Generated Photos 的形式附加到Open Graph 操作,而不是通过常规的照片上传API。
因此,常规照片权限不会授予他们访问权限,您需要用户专门允许您访问他们发布操作的应用的 Open Graph 活动。接受上面的错误报告是因为这似乎是对用户生成的照片的操作的疏忽,但也可能是设计使然,在这种情况下,我在下面概述的解决方法将是唯一支持的方法:
如果您特别需要为用户请求 Instagram(或其他 Open Graph 照片应用)照片,您可以请求 Permission 访问该应用发布的操作。
对于 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
}
},
我还可以使用相同的权限访问我的“Instagram 照片”相册的 /photos 连接,并且可以通过 /me/instapp:take 访问所有 Instagram 的“执行”操作(即照片)