как отправить сообщение другу facebook через граф API, используя Accessstoken

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

Я пытался

$response = $facebook->call_api("/me/feed", "post", "to=john","message=You have a Test message");

Это не работает. У меня есть токен доступа пользователя в моей руке. Только я запутался в процессе отправки.


person JAMES    schedule 31.05.2010    source источник
comment
У вас тоже есть токен доступа к Джону? Приложение должно иметь достаточно разрешений, чтобы публиковать что-либо в ленте Джона.   -  person Ashish Rajan    schedule 03.10.2010
comment
Мы можем отправить ответ с помощью javascript. Проверьте мой ответ.   -  person Somnath Muluk    schedule 29.02.2012


Ответы (9)


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

Если Алиса, ваш пользователь, предоставила вам необходимые расширенные разрешения, у вас есть следующие варианты. :

  • Опубликовать на стене Алисы от ее имени
  • Отправить электронное письмо Алисе
  • Create events on behalf of Alice
    • invite Bob (not your user) to said events
  • Оформить запрос/приглашение от имени Алисы к Бобу
  • Отправить запрос из приложения к Алисе
person Julio Santos    schedule 31.10.2010
comment
Обратите внимание, что вы не можете отправить электронное письмо Бобу от Алисы (сообщение от Алисы Бобу кажется целью ОП) - person Michael Mior; 24.04.2012
comment
Ну... с полем to можно поиграть ;) Но нет, нельзя. Следовательно, он не указан. - person Julio Santos; 24.04.2012
comment
Вот ссылка о том, что вы не можете получить адреса электронной почты друзей: developers.facebook .com/docs/reference/login/email-permissions - person John Erck; 24.05.2013
comment
«Выдать запрос/приглашение от имени Алисы к Бобу», как кто-то может сделать это из бэкэнда? - person lephleg; 07.09.2017

Вы можете открыть диалоговое окно отправки во всплывающем окне.

 $parameters = array(
    'app_id' => $facebook->getAppId(),
    'to' => $facebookUserId,
    'link' => 'http://google.nl/',
    'redirect_uri' => 'http://my.app.url/callback'
 );
 $url = 'http://www.facebook.com/dialog/send?'.http_build_query($parameters);
 echo '<script type="text/javascript">window.open('.json_encode($url).', ...

Подробные параметры см. на странице https://developers.facebook.com/docs/reference/dialogs/send/

person Bob Fanger    schedule 02.08.2011
comment
Большое спасибо, боб. Я как раз искал это. Это даже помогает в предварительном заполнении полей сообщения, поэтому с помощью этого диалогового окна так легко отправить ссылку-приглашение в мое приложение. - person qasimzee; 09.08.2011
comment
Есть ли способ обойти всплывающее диалоговое окно отправки и отправить сообщение напрямую через URL-адрес? - person CyberJunkie; 12.05.2012
comment
могли бы вы указать несколько идентификаторов пользователей, указанных приложением в поле to? - person Rajat Gupta; 12.12.2013

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

person user545351    schedule 16.12.2010

Вы можете отправить на их электронную почту facebook. Электронная почта Facebook состоит из псевдонима профиля + '@facebook.com'. Письмо будет отправлено в папку «Входящие» в Facebook. Обратите внимание, что электронная почта Facebook не принимает поддельные электронные письма. Вам понадобится домен whitelabel или используйте SendGrid.

person sulaiman sudirman    schedule 19.01.2013
comment
Я знаю, что когда-то на этот вопрос был дан ответ. Но как мне получить домен с белой меткой? Знаете ли вы, по каким критериям fb определяет спуфинг? - person Sajuna Fernando; 28.10.2013
comment
У меня это не сработало :( К сожалению, учитывая, насколько это просто - person user1349663; 02.06.2014
comment
Facebook прекратил это с февраля прошлого года, вместо этого он будет перенаправлять на ваш реальный адрес электронной почты. forbes.com/sites/kashmirhill/2014/02/25/ - person sulaiman sudirman; 02.06.2014

Вам нужно будет интегрировать чат xmpp, чтобы ответить на сообщение и написать новое сообщение.

person Umangshu Chouhan    schedule 16.04.2013

Я увидел этот пост и заметил, что он неправильный. Используя javascriot API, вы можете опубликовать сообщение в ленте друга следующим образом: В этом примере «friendID» — это идентификатор пользователя FB друга. Для этого вызова API требуется разрешение «publish_stream».

FB.api('/'+friendID+'/feed', 'post', 
            {
                method: 'feed',
                message: messageText,
                name: 'write a title here',
                caption: 'Put a caption here.',
                description: 'Put your description here.',
                link: 'http://stackoverflow.com/questions/2943297/how-send-message-facebook-friend-through-graph-api-using-accessstoken',
                picture: 'link to the preview thumbnail',                   
            },
             function(response) {
              if (!response || response.error) {
                //alert('Error occured');
              } else {
                //alert('Post ID: ' + response.id);
              }
        });

То же самое происходит с SDK javasfcript — метод PHP должен быть аналогичным.

person Plastic Sturgeon    schedule 14.08.2012

Вместо использования приведенного ниже кода

    [facebook dialog:@"feed"
     andParams:params 
     andDelegate:self]; 

Используйте следующее решение

[facebook requestWithGraphPath:@"me/feed"
   andParams:params
   andHttpMethod:@"POST"
   andDelegate:self];
person codercat    schedule 28.11.2012

person    schedule
comment
Это опубликует сообщение на стене $uesr_id. - person Somnath Muluk; 23.02.2012
comment
@SomnathMuluk Это больше не работает, потому что устарело! - person lomse; 20.02.2013
comment
@Lomse: Да ... Он устарел с февраля 2013 года. - person Somnath Muluk; 20.02.2013

person    schedule
comment
ссылки на документацию пожалуйста? - person tusharmath; 07.09.2013