Отправить личные сообщения друзьям - PullRequest
88 голосов
/ 04 апреля 2010

Мне нужно через Facebook подключить информацию пользователя и отправить личное сообщение всем его друзьям. Возможно ли это?

Ответы [ 9 ]

74 голосов
/ 23 февраля 2012

Теперь возможна отправка личного сообщения через API.

Запустить это событие для отправки сообщения (инициализация объекта facebook должна быть сделана раньше).

to:user идентификатор facebook

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-адрес для перенаправления после того, как пользователь нажмет кнопку Отправить или Отмена кнопки в диалоге. Требуется, но автоматически указывается большинством SDKs.

  • дисплей
    Режим отображения, в котором отображается диалог. Это автоматически указано большинством SDK.

  • до
    Идентификатор пользователя или имя пользователя для отправки сообщения. После того, как диалог пользователь может указать дополнительных пользователей, группы Facebook и адреса электронной почты, на которые нужно отправить сообщение. Отправка контента на Группа Facebook разместит это на стене группы.

  • ссылка
    (обязательно) Ссылка для отправки в сообщении.

  • фотография
    По умолчанию картинка будет сделана по указанной ссылке. URL картинки для включения в сообщение. Картинка будет показана рядом с ссылкой.

  • имя По умолчанию заголовок будет взят по указанной ссылке. Имя ссылка, то есть текст для отображения, на который пользователь нажмет.

  • описание
    По умолчанию описание будет взято по указанной ссылке. Описательный текст для отображения под ссылкой.

Подробнее здесь

@ 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

9 голосов
/ 17 марта 2011

Сейчас это невозможно, но есть обходной путь. Вы можете взаимодействовать с пользователем в общедоступной сфере и просить его отправлять вам личные сообщения, но вы не можете отправлять личные сообщения назад, только публичные. Конечно, все зависит от того, предоставит ли пользователь правильные разрешения.

Если вы дали разрешение на доступ к друзьям этого человека, вы можете теоретически опубликовать на этой стене пользователей ссылки на каждого из друзей, попросив их публично взаимодействовать с вами, а затем, возможно, конфиденциально отправить вам сообщение.

Завести друзей

#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/
9 голосов
/ 09 апреля 2010

Нет, это невозможно. Чтобы отправлять сообщения любого типа пользователю Facebook, вам нужно разрешение этого пользователя.

Если кто-то входит на ваш сайт с помощью Facebook Connect, он явно соглашается поделиться своими данными Facebook с вашим сайтом, и тогда вы сможете этому человеку отправить сообщение по обычным каналам. Вы также сможете получить их список друзей. Однако вы не можете отправлять сообщения друзьям.

8 голосов
/ 30 июля 2012

Вы можете использовать Facebook Chat 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
7 голосов
/ 13 июня 2011

Одним из обходных путей, хотя и не самым удачным, является использование нового адреса электронной почты @ facebook.com. У этого есть несколько недостатков:

1) Не у всех (на момент публикации) в учетной записи включено приложение новых сообщений.

2) Не все настроят свою электронную почту @ facebook.com в своем приложении сообщений.

3) Не каждый выберет в качестве адреса электронной почты свое имя пользователя (если у него даже есть имя на Facebook).

6 голосов
/ 21 июля 2010

Вы не можете. У API Facebook read_mailbox , но нет прав на запись write_mailbox. Я предполагаю, что это сделано для того, чтобы приложения-спамеры не заполняли почтовые ящики друзей.

2 голосов
/ 04 декабря 2012

Для мобильного приложения я сделал решение, введя JavaScript в диалоговом окне. В моем приложении ios есть скрытый веб-просмотр. Это загружает диалоговое окно отправки сообщения fb api .. затем я внедряю некоторый javascript, чтобы установить поля "to" и "message" и отправляю форму .. Так что конечному пользователю не нужно ничего делать. Сообщение отправлено на входящие в Facebook без уведомления ...

0 голосов
/ 01 ноября 2017

В этой теме сказано, что вы не можете отправлять личные сообщения группе друзей на Facebook, но я нашел это https://developers.facebook.com/docs/sharing/reference/send-dialog

0 голосов
/ 04 февраля 2014

Для этого нет графика api, вам нужно использовать Facebook xmpp chat api, чтобы отправить сообщение, хорошая новость: я создал php-класс, который слишком прост в использовании, вызову функцию, и сообщение будет отправлено, его открытый исходный код, проверьте его: Facebook facebook api php в описании сказано, что это закрытый источник, но позже он стал открытым, см. первый комментарий, вы можете клонировать его из github Теперь это открытый исходный код.

...