Отправить сообщение нескольким получателям, используя Facebook API - PullRequest
4 голосов
/ 30 марта 2012

Есть ли другой способ отправить сообщение нескольким получателям. Мы попытались интегрировать логику, описанную здесь Диалог отправки Facebook нескольким друзьям с использованием массивов получателей но это не выглядит, это работает сейчас. Он просто позволяет отправлять информацию первому получателю в списке идентификаторов.

Спасибо за вашу помощь.

Ответы [ 2 ]

5 голосов
/ 07 августа 2012

Я нашел обходной путь для отправки сообщений Facebook нескольким друзьям.

Каждый пользователь Facebook автоматически получает адрес электронной почты @ facebook.com. Адрес совпадает с публичным именем пользователя или общедоступным идентификатором пользователя.

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

Важно использовать электронную почту подключенных пользователей в качестве отправителя, иначе она не будет работать.

Вот пример, который получает все адреса электронной почты друзей и вызывает веб-службу.

<div id="fb-root"></div>
<script type="text/javascript" src="https://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
    FB.init({
        appId: '#APP_ID#',
        status: true,
        cookie: true,
        xfbml: true
    });

    FB.getLoginStatus(function (response) {
        if (response.status === 'connected') {
            GetData();
        } else {
            Login();
        }
    });

    function Login() {
        FB.login(function (response) {
            if (response.authResponse) {
                GetData();
            }
        }, { scope: 'email' });
    }

    function GetData() {
        //Get user data
        FB.api('/me', function (response) {
            //Sender
            var sender = response.email;

            //Get friends
            FB.api('/me/friends', function (response) {

                //Recepients array
                var recipients = [];
                var length = response.data.length;
                var counter = 0;

                //Loop through friends
                for (i = 0; i < length; i++) {
                    var id = response.data[i].id;

                    //Get friend data
                    FB.api('/' + id, function (response) {
                        var recipient = "";

                        //User got a username, take username
                        if (response.username) {
                            recipient = response.username + '@facebook.com';
                        }
                        //No username, take id
                        else {
                            recipient = response.id + '@facebook.com';
                        }

                        //Add e-mail address to array
                        recipients.push(recipient);

                        counter++;
                        //last email -> send
                        if (counter == length) {
                            SendEmail(sender, recipients);
                        }
                    });
                }
            });
        });
    }

    function SendEmail(sender, recipients) {
        //Call webservice to send e-mail e.g.
        $.ajax({ type: 'POST',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            url: '#WEBSERVICE#',
            data: '{ sender:"' + sender + '", recipients: ["' + recipients.join('","') + '"] }',
            success: function (response) {
                //do something
            }
        });
    }
</script>
1 голос
/ 31 марта 2012

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

...