我想发布到我自己的Facebook墙上。所以我创建了一个" app"在我的 个人脸书页面,并获得app_id,app_secret等。
然后我做了这段代码:
@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url)
@token = @oauth.get_app_access_token
@graph = Koala::Facebook::API.new(@token)
foo = @graph.get_object('me')
然而,我收到此错误:
必须使用活动访问令牌来查询有关的信息 当前用户。 [HTTP 400] (考拉:: ::实AuthenticationError)
令牌有效,我查了一下。我需要张贴到我的OWN墙上,而不是 不同的用户。根据我在文档中阅读的内容,我需要一个"应用程序 访问密钥",而不是"用户访问密钥"去做这个。我有点新鲜 facebook api列表,所以我想我错过了一些非常基本的东西。
答案 0 :(得分:1)
只要用户已经为您的应用授予了适当的权限,您就可以使用应用令牌而不是用户令牌发布到墙上。
即在时间轴
publish_actions
此外,
foo = @graph.get_object('me')
不是POST请求。它说,从名为me
的图中获取对象。如果您使用的是应用程序令牌,则me
将无法解析任何内容,因为应用程序无法告知您所指向的应用程序中的所有用户中的“我”。因此,您需要引用用户的应用范围ID。
e.g
foo = @graph.get_object('4')
其中4
是数字应用范围ID(在您的情况下4将不起作用,您需要为您的应用找出正确的ID)。考拉中的正确呼叫将类似于
foo = @graph.put_connections("4", "feed", :message => "I am writing on my wall!")
答案 1 :(得分:1)
我的问题是用户(在这种情况下是我自己)必须允许访问我的应用程序才能发布到我的墙上。
http://developers.facebook.com/docs/authentication/
详细介绍了完整的OAuth流程但具体来说,我需要获取一个我必须访问的网址,然后说“#34;是"到authnetication问题。代码在这里:
@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url)
@oauth.url_for_oauth_code(:permissions => "publish_actions")
网址如下所示:
https://www.facebook.com/dialog/oauth?
client_id={app_id}&
redirect_uri={redirect-uri}&scope=publish_actions
注意,URL必须指定您要从用户请求的权限(在这种情况下,是发布到墙上的权限)。此权限请求在"范围"下指定。变量。注意某些版本的facebook api允许通过" publish_stream"范围和其他版本需要" publish_actions"范围。有关范围变量下可用权限的更多信息,请访问:https://developers.facebook.com/docs/facebook-login/permissions/v2.0
当您访问从上述声明生成的网址时,Facebook会向您显示一条消息,询问该特定应用是否有权发布到您的留言板。当然,你说"是"。之后,您的Facebook应用程序可以使用" app访问令牌#34;
发布到Facebook墙上之后,使用您的应用访问令牌轻松发布到墙上。适合我的代码是:
@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url)
@app_access_token = @oauth.get_app_access_token
@graph = Koala::Facebook::API.new(@app_access_token)
foo = @graph.put_connections(facebook_user_id, "feed", :message => "Test message")