通过考拉发布到我自己的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授予应用程序访问权限
  • 由Graph Login Flow提供的用户访问令牌
  • 此时,您可以使用用户访问令牌或应用程序访问令牌
  • 此外,

    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

    上一篇: Posting to my own facebook wall via Koala

    下一篇: koala Facebook events api