2011-05-08 28 views
3

我有一个用户,user_2。他们的墙上有一个帖子,由user_1制作。当我尝试通过Facebook Graph API访问特定类型的对象时,为什么会出现此错误?

enter image description here

的网址是

https://www.facebook.com/user_1/posts/10150166228506188 

我尝试使用Graph API来获取内容,这个请求:

https://graph.facebook.com/10150166228506188?access_token=ACCESSTOKENUSER_2 

我得到这个错误:

{ 
    "error": { 
     "type": "GraphMethodException", 
     "message": "Unsupported get request." 
    } 
} 

我使用的的access_token是好的,因为请求得到这样的状态的东西&图像精细工作:

https://graph.facebook.com/10150233707783933?access_token=ACCESSTOKENUSER_2 

结果:

{ 
    "id": "10150233707783933", 
    "from": { 
     "name": "American Steel", 
     "category": "Professional sports team", 
     "id": "203692078932" 
    }, 
    "tags": { 
     "data": [ 
etc 

错误似乎发生每当我试图让有项目这种URL的:

https://www.facebook.com/username/posts/item_id 

的权限我的应用程序包括以下: enter image description here

为什么会发生此错误?

回答

4

我认为,为了直接通过图表api访问帖子,您必须将用户标识预先设置为您在facebook网址中看到的帖子标识。

所以在您的例子中,Facebook发布网址是:

https://www.facebook.com/user_1/posts/10150166228506188 

,并尝试通过图形API来获取:

https://graph.facebook.com/10150166228506188?access_token=ACCESSTOKENUSER_2 

,但你应该做的:

https://graph.facebook.com/{id of user_1}_10150166228506188?access_token=ACCESSTOKENUSER_2 

我注意到所有帖子的ID都是这样形成的:

https://graph.facebook.com/me/posts?access_token= ...

这是否解决了您的问题?

+0

是的,非常感谢! – ben 2011-05-08 23:19:36

2

您正在错误地访问该帖子的结束点。 Facebook上的每个对象都有唯一的ID。现在,恰巧它们通过将不同的ID附加在一起形成它(您的文章是一个例子,<user_id>_<post_id>,并且对该文章的评论是<user_id>_<post_id>_<comment_id>)。 Facebook没有公开承认这一点(并非他们真的必须,这很明显),这使得我依赖这种范式来访问图中的数据。这是因为Facebook可以在任何时候改变它,而且他们没有说过“是将这两个id附加在一起,并且可以从该图的这个部分获得一些有意义的东西”这一事实意味着他们不需要通知任何人这种变化,你可能会在有一天醒来,你的应用程序被完全破坏,你必须尽快找到解决方法,同时还要缩短时间。

图形api的工作原理是通过向API请求该唯一ID来访问Facebook上的对象。所以,你不需要去graph.facebook.com/<user_id>/posts/<post_id>访问(也不能访问)你的帖子。相反,你去graph.facebook.com/<post_id>。您从图上的/<user_id>/home/<user_id>/feed端点获得post_id。没有必要修改post_id以便从图中获取关于它的信息。

希望帮助

相关问题