Пользовательские запросы не удаляются - PullRequest
2 голосов
/ 03 октября 2011

Я разрешаю пользователям отправлять запросы другим пользователям, предлагая им использовать мое приложение.

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

Во-первых, когда пользователь нажимает на запрос, я хочу удалить его, независимо от того, взаимодействуют ли они с моим приложением или нет.Это будет связано с отправкой DELETE для этого объекта на графике: request-id_recipient-id.Однако, поскольку пользователь, возможно, не взаимодействовал с моим приложением, у меня нет их user_id, поэтому я не могу этого сделать - пользователю остается самостоятельно очистить мой запрос (не очень).

Во-вторых -Даже когда пользователь взаимодействует с моим приложением, я получаю его идентификатор пользователя и выполняю вызов DELETE request-id_recipient-id. Я получаю такой ответ:

(# 200) Объект (класс EntAppRequest), поддерживаемыйтекущее средство просмотра не может видеть id 267270596647001 500 ****** (EntID: 267270596647001)

Это говорит о том, что получатель запроса не имеет разрешения удалить его с помощью своего маркера доступа?Это правильно, потому что это кажется мне немного отсталым.Или это ситуация, в которой мне требуется расширенное разрешение manage_requests?Мне это тоже показалось бы странным, потому что это добавило бы дополнительные права доступа в поле Auth, которое пользователь мог бы отклонить.

EDIT - Забыл упомянуть, что это новое приложение, поэтому оно использует Requests 2.0 и Requests 2.0 Efficient

Любая помощь будет оценена.

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

По первой проблеме.Учитывая, что у вас нет идентификатора пользователя для пользователей, которые не взаимодействовали с вашим приложением, кажется, нет способа удалить отправленный им запрос.Это похоже на «дыру» в дизайне запросов на Facebook.

Однако, кажется, есть один способ обойти запросы.Когда вы отправляете запрос с использованием Javascript, у вас есть доступ к user_ids всех пользователей, которым был отправлен запрос:

{
  request: ‘request_id’
  to:[array of user_ids]
}

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

Обновление: [12 января 2012] Эта ошибка была принята и назначена здесь https://developers.facebook.com/bugs/202883726463009

Обновление: ошибка была помечена как оформленная

0 голосов
/ 05 октября 2011

1) Вы можете удалить запрос, как только пользователь авторизует приложение. В противном случае у вас не будет возможности узнать, кто является приглашенным, и, следовательно, запросить идентификатор

2) Кажется, вы пытаетесь удалить уже удаленный запрос

0 голосов
/ 03 октября 2011

Не зная точно, что вы делаете, трудно понять, но вот несколько возможных решений:

Прежде всего, вашему приложению всегда нужно будет удалять запрос, в отличие от запросов старого стиля, приложениеотвечает за очистку запросов, как только они приняты, и они не удаляются автоматически, потому что пользователь принял их - это описано здесь: https://developers.facebook.com/docs/reference/dialogs/requests/#deleting

Вы должны иметь возможность использовать токен доступа к приложению для удаления запросакоторое было отправлено вашим приложением независимо от того, какие разрешения у вас есть для пользователя-получателя (хотя, исходя из вашего описания, приведенного выше, вы должны использовать токен доступа, который вы имеете для получателя):

Если вы включили параметры миграции для «эффективных» запросов, УДАЛИТЬ имеет формат DELETE <a href="https://graph.facebook.com/" rel="nofollow">https://graph.facebook.com/</a>[<request_id>_<user_id>]?access_token=[USER or APP ACCESS TOKEN]

Еслиу вас нет, он будет иметь формат

DELETE <a href="https://graph.facebook.com/" rel="nofollow">https://graph.facebook.com/</a>[request_id]?access_token=[USER OR APP ACCESS_TOKEN]

...