Пользовательский объект, возвращаемый из Graph API, периодически содержит пустой массив для данных разрешений - PullRequest
0 голосов
/ 01 февраля 2012

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

Запрос графа будет выглядеть примерно так:

https://graph.facebook.com/[uid]?access_token=[token]&fields=permissions

Обычно нормальный ответ будет выглядеть примерно так:

"permissions": {
  "data": [
    {
        "installed": 1,
        "email": 1,
        "bookmarked": 1,
        "publish_actions": 1
     }
  ]
}

Иногда, хотяОтвет выглядит следующим образом:

"permissions": {
  "data": [

  ]
}

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

Просмотр документов API пользователя(http://developers.facebook.com/docs/reference/api/user/), похоже, что не предоставленные разрешения исключены. Из документации неясно, что происходит, когда не предоставляются разрешения. Можно предположить, что пустая карта выдала бы ответ примерно так:

"data": [
  {
  }
]

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

Это оставляет мне несколько вопросов, которые яЯ надеюсь, что кто-то с соответствующими знаниями может ответить:

  1. Существуют ли какие-либо обстоятельства, при которых разрешения, предоставленные пользователем приложению, не доступны через API Graph?
  2. Есть лилюбые обстоятельства, при которых применение холстаn может быть авторизован пользователем без предоставления каких-либо разрешений?(Отмена диалогового окна авторизации приводит к запросу с дополнительными параметрами строки запроса, который обрабатывается по-разному)
  3. Существуют ли какие-либо обстоятельства, при которых пользователь может отозвать первоначально предоставленные разрешения без отмены авторизации приложения?

Редактировать:

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

1 Ответ

0 голосов
/ 02 февраля 2012
  1. Нет, насколько мне известно.
  2. Эта ситуация называется базовыми разрешениями, когда дополнительные параметры не указываются в параметре области действия при входе в систему
  3. Да, пользователь приложения может отозвать определенные разрешения. Перейдите к (http://www.facebook.com/settings?tab=applications)) и нажмите «Изменить» в одном из приложений (например, Groupon, Music или YouTube), и вы увидите, что есть определенные разрешения, которые могут быть удалены пользователем в любое время. Поэтому хорошо, что ваше приложение считывает разрешения он по-прежнему доступен для него. Он может сэкономить некоторые ненужные вызовы графа для объектов / действий, которые вы больше не можете получить.
...