Я сталкиваюсь с ситуацией, когда при запросе списка разрешений, которые пользователь предоставил приложению 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": [
{
}
]
Однако, даже если ответ является пустым массивом, точка в коде, где делается этот запрос, не должна быть достижимой без принятия хотя бы некоторых разрешений.
Это оставляет мне несколько вопросов, которые яЯ надеюсь, что кто-то с соответствующими знаниями может ответить:
- Существуют ли какие-либо обстоятельства, при которых разрешения, предоставленные пользователем приложению, не доступны через API Graph?
- Есть лилюбые обстоятельства, при которых применение холстаn может быть авторизован пользователем без предоставления каких-либо разрешений?(Отмена диалогового окна авторизации приводит к запросу с дополнительными параметрами строки запроса, который обрабатывается по-разному)
- Существуют ли какие-либо обстоятельства, при которых пользователь может отозвать первоначально предоставленные разрешения без отмены авторизации приложения?
Редактировать:
На основании приведенного ниже обсуждения я хотел бы уточнить, что моему приложению требуется разрешение по электронной почте, которое, по-видимому, не может быть отозвано.Приложению всегда требовалось разрешение по электронной почте, поэтому не должно быть случая более старой установки без этого разрешения.