如何在用户离线时发布给用户朋友墙

时间:2011-12-08 10:57:18

标签: facebook offline

在我的应用程序中,用户授予我的应用程序扩展权限,我获取访问令牌并将其存储为长期访问令牌。

此用户会看到他们的朋友列表,他们会选择一个。

我将他们的名字和fbuid存储在我的数据库中。

现在在将来的某一天,我想向这位朋友的墙发消息。 这可能吗? 如果没有,当初始用户离线时,还有哪些其他选项可以在Facebook上向朋友发送链接?

* 更新 我能够使用长期访问令牌和离线访问来执行此操作,如下所示:

access_token = "AAACvmqy1nYoBAAZCk*************dZAMjsLxKxR7DaZBE0NxY8ZBGBW1q2mzsB9TDT0RvgeQcDdnyFJNAYRf0icnhlbikZD"
    appID        = '19307***********'
    message      = "Happy Birthday   from  your friends."
    name         = "Click here for your Birthday Surprise"
    redirect_uri = URI.parse('http://localhost:3000/facebook/')
    link         = "https://www.facebook.com/dialog/oauth?client_id=#{appID}&redirect_uri=#{redirect_uri}"
    caption      = "Your friends have created a surprise for you. Click the link to see what it is."
    picture      = 'http://www.birthdaywall.net/logo-mail.png'
    userID       = '100002*********'
    uri = URI.parse("https://graph.facebook.com/#{userID}/feed")
    req = Net::HTTP::Post.new(uri.path)
    result = req.set_form_data({:access_token => access_token , :message => message, :app_id => appID, :name => name, :link => link, :caption => caption, :picture => picture,  })
    sock = Net::HTTP.new(uri.host, 443)
    sock.use_ssl = true
    sock.start do |http|
      response = http.request(req)
    end 

我不知道这是否是最好的方式,但它对我有用,所以我正在使用它。如果有人有更好的方法,我会很高兴知道它。

1 个答案:

答案 0 :(得分:0)

我猜你已经拥有了publish_stream权限。您还需要 offline_access 扩展权限才能使您的访问令牌保持较长时间:

使您的应用可以随时代表用户执行授权请求。默认情况下,大多数访问令牌在短时间后过期,以确保应用程序仅在用户主动使用应用程序时代表用户发出请求。此权限使我们的OAuth端点返回的访问令牌持久存在。

见这里:https://developers.facebook.com/docs/reference/api/permissions/