9

有没有办法从 Ruby on Rails 发布 Facebook 应用程序邀请,例如通过部署 Koala?

乍一看似乎是不可能的。除了简单地张贴到墙上之外,还有什么解决方法吗?

4

2 回答 2

23

实际上mikeonrails给出了一个正确的链接 - 请求对话框是邀请朋友到您的应用程序并向他们发送其他类型的请求的方式。但是,对于发送给未安装应用程序的用户的请求,它确实需要用户交互(正如视频所示)。

现在了解详细信息。您可以发送两种类型的请求:

  • 用户生成的请求:这些可以发送给没有安装应用程序的用户(即应用程序邀请)。它们只能使用 Javascript SDK(或 iOS 或 Android SDK,但我认为您对这些不感兴趣)发送,并且它们确实需要用户交互。它将由一个弹出窗口组成,该弹出窗口将显示他的朋友的选择(由您选择)或朋友选择器和一个发送按钮,用于向他们发送您的消息。
  • 应用程序生成的请求:这些只能发送给安装了应用程序的用户,但可以在没有用户交互的情况下发送。

用户生成请求的代码如下(使用 Javascript SDK):

// this will show the pop-up dialog with a friend selector
// add a `to: 'friend_id1,friend_id2` to skip the friend selector
FB.ui({
    method: 'apprequests',
    message: 'My Great Request'
}, requestCallback);

对于应用程序生成的请求,您可以像这样使用 Koala:

user = Koala::Facebook::API.new(user_token)
user.put_object("user_with_app_installed_id", "apprequests", {:message => "Would you like to be friends?")

因此,结论是您不能在未经用户同意的情况下邀请用户的朋友加入您的应用程序,但您可以让他非常简单地做到这一点(单击 2 次)。

如果您想阅读更多内容:

于 2011-11-15T00:59:57.753 回答
4

您可以使用 Facebook 聊天 API 发送私人消息,以下是 Ruby 中使用 xmpp4r_facebook gem 的示例:

sender_chat_id = "-#{sender_uid}@chat.facebook.com"
receiver_chat_id = "-#{receiver_uid}@chat.facebook.com"
message_body = "message body"
message_subject = "message subject"

jabber_message = Jabber::Message.new(receiver_chat_id, message_body)
jabber_message.subject = message_subject

client = Jabber::Client.new(Jabber::JID.new(sender_chat_id))
client.connect
client.auth_sasl(Jabber::SASL::XFacebookPlatform.new(client,
   ENV.fetch('FACEBOOK_APP_ID'), facebook_auth.token,
   ENV.fetch('FACEBOOK_APP_SECRET')), nil)
client.send(jabber_message)
client.close

更新:Facebook 聊天 API 已被弃用,因此无法再使用此解决方案。

于 2012-07-30T07:30:23.303 回答