2011-12-08 22 views
0

在我的应用程序中,用户授予我的应用程序扩展权限,并获取访问令牌并将其存储为其长期访问令牌。如何发布到用户朋友墙时,用户处于脱机状态

此用户显示了他们的朋友列表,他们选择一个。

我将他们的名字和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 

我不知道这是不是最好的方式,但它为我工作所以我正在使用它。如果有人有更好的办法,我会很高兴知道这件事。

回答

0

我想你已经拥有publish_stream权限。您还需要offline_access扩展权限,使令牌长寿您的访问:

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

在这里看到:https://developers.facebook.com/docs/reference/api/permissions/

+0

我不认为我需要有offline_access因为根据文档“publish_stream =>使您的应用程序来发布内容,评论,喜欢到用户的流,并在您可以随时将内容发布到用户的Feed中,而无需使用offline_access,但请注意,Facebook建议使用用户发起的共享模式。“但我不确定这是否意味着我仍然需要使用该令牌来发布或拒绝 – chell

+0

您是对的,它是这样说的。那么你是否已经试图实现它?顺便说一下,也许您还需要存储访问令牌。 – borisdiakur

+0

我已经能够发布。我在上面的编辑中显示了它。感谢您推动正确的方向。 – chell

相关问题