Нужна ли область publish_stream для удаления приглашений? - PullRequest
1 голос
/ 09 декабря 2011

Я использую FB.ui({method: 'apprequests', ... }), чтобы пользователи могли приглашать своих друзей в мое веб-приложение на Java.

В документации диалога Facebook Requests говорится, что мне нужно удалить запрос, когда пользователь принял запрос:

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

http://developers.facebook.com/docs/reference/dialogs/requests/#deleting

Когда я пытаюсь сделать это с помощью Java-клиента RestFB Graph API Я получаю ошибку разрешения от facebook.

код:

FacebookClient client = новый DefaultFacebookClient (appAccessToken, новый DefaultWebRequestor (), новый DefaultJsonMapper ()); client.deleteObject (String.format ("% d_% d", requestId, facebookUserId));

В журнале написано:

(com.restfb.DefaultWebRequestor) ИНФОРМАЦИЯ: Выполнение POST для graph.facebook.com/XXX_XXX с параметрами (отправляется в теле запроса): Метод = удаление & access_token = XXX & Формат = & JSON локаль = ru

Ошибка:

Facebook ответил с кодом состояния HTTP 403 и телом ответа: {"error": {"message": "(# 200) Разрешения ошибка», "тип": "OAuthException"}}

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

1 Ответ

1 голос
/ 28 мая 2013

Вам не нужна область publish_stream, если вы используете токен APP.

Если вы используете C # facebook SDK, вы можете использовать это:

var fb = new FacebookClient(Config.FacebookAppId, Config.FacebookAppSecret);
var result = fb.Delete(string.Format(
  "{0}_{1}?access_token={2}",
  facebookRequestId,
  facebookUserId,
  fb.AccessToken
));

(См. Также: Запрос на удаление Facebook )

...