通过考拉发布到我自己的Facebook墙上
我正在尝试发布到我自己的Facebook墙上。 所以我在我的个人Facebook页面中创建了一个“应用程序”,并获得了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](考拉:: Facebook :: AuthenticationError)
令牌是有效的,我检查。 我需要张贴到我自己的墙上,而不是一个不同的用户。 根据我在文档中读到的内容,我需要一个“应用访问密钥”,而不是“用户访问密钥”来执行此操作。 我对facebook api列表有点新,所以我想我错过了一些非常基本的东西。
只要用户已经向应用程序授予适当的权限,您就可以使用应用程序令牌而不是用户令牌发布到墙上。
就是在时间轴上
publish_actions
授予应用程序访问权限 此外,
foo = @graph.get_object('me')
不是POST请求。 它说,从名为me
的图表中获取对象。 此外,如果您使用的是应用程序令牌,则me
无法解析任何内容,因为应用程序无法分辨应用程序中所有用户中的哪个“我”。 因此,您需要引用该用户的应用作用域ID。
例如
foo = @graph.get_object('4')
其中4
是一个数字应用范围的ID(4不适用于您的情况,您需要为您的应用找出正确的ID)。 在考拉的正确呼叫将是类似的
foo = @graph.put_connections("4", "feed", :message => "I am writing on my wall!")
我的问题是,用户(在这种情况下,我自己)必须允许访问我的应用程序张贴到我的墙上。
完整的OAuth流程详见http://developers.facebook.com/docs/authentication/
但具体而言,我需要获取一个我必须访问的URL,然后对认证问题说“是”。 代码在这里:
@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url)
@oauth.url_for_oauth_code(:permissions => "publish_actions")
该URL将如下所示:
https://www.facebook.com/dialog/oauth?
client_id={app_id}&
redirect_uri={redirect-uri}&scope=publish_actions
请注意,该网址必须指定您希望向用户请求的权限(在这种情况下,允许发布到墙上)。 该权限请求在“范围”变量下指定。 请注意,某些版本的Facebook API允许通过“publish_stream”范围发布,而其他版本则需要“publish_actions”范围。 有关范围变量下可用权限的更多信息,请访问:https://developers.facebook.com/docs/facebook-login/permissions/v2.0
当您访问上述语句生成的网址时,Facebook会向您发送一条消息,询问该特定应用是否有权发布到您的墙上。 你当然会说“是”。 之后,您的Facebook应用可以使用“应用访问令牌”发布到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")
链接地址: http://www.djcxy.com/p/32665.html