在我的应用程序中,用户授予我的应用程序扩展权限,我获取访问令牌并将其存储为长期访问令牌。
此用户会看到他们的朋友列表,他们会选择一个。
我将他们的名字和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 :(得分:0)
我猜你已经拥有了publish_stream权限。您还需要 offline_access 扩展权限才能使您的访问令牌保持较长时间:
使您的应用可以随时代表用户执行授权请求。默认情况下,大多数访问令牌在短时间后过期,以确保应用程序仅在用户主动使用应用程序时代表用户发出请求。此权限使我们的OAuth端点返回的访问令牌持久存在。
见这里:https://developers.facebook.com/docs/reference/api/permissions/