向朋友发送私信

90

我需要通过Facebook连接获取用户信息并向他的所有好友发送私信,这可能吗?


1
我意识到这并未解决问提者的问题,但是那些在寻找回复私信方法的人可能会发现这个链接很有用:https://dev59.com/62HVa4cB1Zd3GeqPlEEE - Trevor
9个回答

74
通过 API 发送私信现在是可以实现的。
触发此事件以发送消息(必须先进行 Facebook 对象的初始化)。 to:user 是 Facebook 的用户ID。
function facebook_send_message(to) {
    FB.ui({
        app_id:'xxxxxxxx',
        method: 'send',
        name: "sdfds jj jjjsdj j j ",
        link: 'https://apps.facebook.com/xxxxxxxaxsa',
        to:to,
        description:'sdf sdf sfddsfdd s d  fsf s '

    });
}

属性

  • app_id
    应用程序的标识符。大多数SDK会自动指定此项,但是需要填写此项。

  • redirect_uri
    用户单击对话框上的发送或取消按钮后要重定向到的URL。大多数SDK会自动指定此项,但是需要填写此项。

  • display
    渲染对话框的显示模式。大多数SDK会自动指定此项。

  • to
    要发送消息的用户ID或用户名。一旦对话框出现,用户可以指定其他用户、Facebook组和电子邮件地址来发送消息。将内容发送到Facebook组将在该组的墙上发布它。

  • link
    (必需)要在消息中发送的链接。

  • picture
    默认情况下,图片将从指定链接获取。包含在消息中的图片的URL。图片将显示在链接旁边。

  • name 默认情况下,标题将从指定链接获取。链接的名称,即用户将单击的要显示的文本。

  • description
    默认情况下,描述将从指定链接获取。要显示在链接下面的描述性文本。

在此处查看更多信息

@VishwaKumar:

要发送自定义文本消息,您必须将'message'参数添加到FB.ui,但我认为此功能已弃用。您现在无法预填充消息。不过可以试试。

FB.ui({
  method: 'send',
  to: '1234',
  message: 'A request especially for one person.',
  data: 'tracking information for the user'
});

请查看此链接:http://fbdevwiki.com/wiki/FB.ui


3
这个解决方案已经存在一段时间了。它并不能完全解决问题,因为你必须使用Facebook的弹出窗口,并且只能填写一个人(此时可以在这里跟踪错误[http://developers.facebook.com/bugs/314701778595814])。完整的解决方案允许你按照自己的方式使用标准API发送消息,尽管Facebook可能已经彻底取消了这个功能。 - Scott
2
@Somnath,感谢您发布的解决方案!您知道是否有一种方法可以绕过写消息窗口直接发送消息吗? - CyberJunkie
2
@CyberJunkie:我认为Facebook没有提供这样的绕过功能。用户必须点击发送消息按钮,否则您的收件箱将充满广告。 - Somnath Muluk
@SomnathMuluk:我已经添加了,但是没有在用户的消息收件箱中显示消息,您可以在此处查看http://stackoverflow.com/questions/16465119/send-message-to-selected-friends-in-facebook - kumar
@SomnathMuluk:看起来你现在甚至无法设置“名称”或“描述”文本。它将自动从网站中获取 :( - skaz
显示剩余10条评论

9
现在不可能直接发送私信,但有一个解决方法。你可以在公共领域与用户互动,并要求他们给你发送私信,但你只能回复公开消息。当然,这取决于用户是否授予你正确的权限。
如果你已经获得了访问某个人朋友列表的权限,理论上你可以在该用户的墙上发布与每个朋友相关的内容,要求他们公开与你互动,然后潜在地通过私信与你联系。
获取好友列表。
#if authenticated
https://graph.facebook.com/me/friends
http://developers.facebook.com/docs/reference/api/user/

发布到公共领域

http://developers.facebook.com/docs/reference/api/status/

获取发送给该用户的消息(如果已获得权限)
http://developers.facebook.com/docs/reference/api/message/

现在我们可以发送私信了。我已经给出答案。 - Somnath Muluk

9

不,这是不可能的。要向Facebook用户发送任何类型的消息,您需要该用户的许可。

如果有人使用Facebook Connect登录您的网站,则他们明确同意与您的网站分享其Facebook数据,然后您将能够通过常规渠道向该用户发送消息。您还可以获取他们的好友列表。然而,您无法向朋友发送消息。


我的谷歌搜索技巧正在失败。你有关于如何做这个的链接吗? - Randell

9
您可以使用Facebook Chat API发送私信,以下是一个使用xmpp4r_facebook宝石的Ruby示例:
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发送私信的博客文章 - http://dalibornasevic.com/posts/35-how-to-send-private-messages-with-facebook-api - Dmitry Khryukin
你有类似的 PHP 代码可以发送私信吗? - Snehal S
3
自2015年5月1日起,此功能已自v2.0版本后被弃用。 - Daniel Cukier

7

一种权宜之计,虽然不是最好的方法,就是使用新的@facebook.com电子邮件地址。但这里有几个缺点:

1)截至发帖时,并非所有人都已在其账户中启用了新消息应用程序。

2)并非所有人都已在其消息应用程序中设置了@facebook.com电子邮件。

3)并非所有人都会选择将其用户名(如果他们甚至拥有Facebook用户名)作为其电子邮件地址。


6
您无法这样做。Facebook API 有 read_mailbox 权限,但没有写入信箱的扩展权限。我猜这是为了防止滥发垃圾邮件给朋友的应用程序。

2

对于移动应用程序,我通过在对话框视图中注入JavaScript来解决问题。在我的iOS应用程序中有一个隐藏的Web视图,它加载了FB消息发送对话框API ..然后我注入一些JavaScript来设置“to”和“message”字段并提交表单..这样最终用户无需做任何事情。消息会悄悄地发送到Facebook收件箱。


你能详细解释一下吗? - Totty.js
@Totty,你能展示一下你的实现吗?我非常需要它用于我的iOS应用程序。 - Alex

1

0

这里没有任何图形API可用,您需要使用Facebook XMPP聊天API来发送消息,好消息是:我已经制作了一个非常易于使用的PHP类,调用一个函数即可发送消息,它是开源的,请查看:facebook message api php 描述说它是封闭源代码,但后来变成了开源,可以看第一条评论,您可以从GitHub上克隆。现在它是开源的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接