Создание фэйсбук приложений - PullRequest
4 голосов
/ 14 января 2012

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

$param = array(
   'message'      => 'XYZ shared a file with you',
   'data'         => 'additiona_string_data',
   'access_token' => $facebook->getAccessToken(),
);
$tmp = $facebook->api("/$uid/apprequests", "POST", $param);

, но я всегда получаю Uncaught OAuthException: (#2) Failed to create any app request thrown

Я не знаю, в чем проблема.

Ответы [ 3 ]

8 голосов
/ 14 января 2012

Вы должны прочитать документацию запросов.Существует объяснение двух разных типов запросов.

  • , инициированный пользователем (с диалогом запроса ) * Сгенерировано приложение
  • (с графиком API )

Вам нужны запросы, генерируемые приложением , то есть вам нужен токен доступа к приложениям, а не пользователи.
Я предполагаю, что вы используете маркер доступа пользователей, потому что вы не включили инициацию объекта facebook в свой пример кода и, возможно, уже проверили пользователя, поэтому вызов getAccessToken() вернет маркер доступа пользователей, а нетокен доступа к приложениям.

1 голос
/ 14 января 2012

Я немного сбит с толку: «Я пытаюсь отправить сообщение из приложения пользователю, когда происходит определенное событие. Прямо сейчас у меня есть этот код» означает.

  1. Отправка электронной почты пользователю, когда кто-то публикует на его стене

  2. Отправка приглашения на событие пользователю

  3. Отправка приглашения пользователю приложения

  4. Запись на стене пользователя, когда происходит что-то вроде «XYZ поделился с вами файлом».

Ответить

  1. Вам необходимы права доступа email и read_stream пользователя. Наблюдайте за его стеной, используя обновления RealTime, а затем отправьте ему электронное письмо, используя SMTP-сервер.

  2. См. http://developers.facebook.com/docs/reference/api/event/#invited о том, как создать приглашение на мероприятие

  3. Как указал @Lix, см. https://developers.facebook.com/docs/channels/#requests

  4. Вы должны выполнить это, используя новый объект / действия Open Graph. Смотрите этот пример: https://developers.facebook.com/docs/beta/opengraph/tutorial/

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

Вы можете получить токен доступа к приложению Facebook через:

https://graph.facebook.com/oauth/access_token?client_id=FB_APP_ID&client_secret=FB_APP_SECRET&grant_type=client_credentials

Пример рабочего кода для публикации запроса приложения к пользователю с помощью Facebook PHP SDK (при необходимости добавьте обработку ошибок):

$facebook = new Facebook(array(
  'appId'  => FB_APP_ID,
  'secret' => FB_APP_SECRET,
));

$token_url = "https://graph.facebook.com/oauth/access_token?" ."client_id=" . 
   FB_APP_ID ."&client_secret=" . FB_APP_SECRET ."&grant_type=client_credentials";

$result = file_get_contents($token_url);
$splt = explode('=', $result);
$app_access_token =$splt[1];

$facebook->setAccessToken($app_access_token);

$args = array(
    'message' => 'MESSAGE_TEXT',

);
$result = $facebook->api('/USER_ID/apprequests','POST', $args);
...