Подтвердить что ты не робот

Facebook Apps: Дополнительные разрешения

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

Позже небольшой процент пользователей вернется и снова будет использовать приложение. Некоторые из людей, которые ранее не хотели писать на стену (и, таким образом, я не просил publish_stream), теперь хотят писать на их стену.

Как запросить дополнительные разрешения после того, как пользователь уже разрешил приложение?

Аналогично, как я могу запросить пользователя, чтобы указать, какие разрешения они уже предоставили?

4b9b3361

Ответ 1

Это так же просто, как добавление нового разрешения на новый fb:login-button:

<fb:login-button scope="publish_stream">
  Let me write on your wall!
</fb:login-button>

Итак, например, у вас есть скрытое в DIV, и если пользователь установил флажок, вы показываете DIV и запрашиваете новое разрешение!

Хороший живой пример этого можно найти на тестовой консоли Facebook:

  • Нажмите "Войти", чтобы "добавить" приложение
  • Затем нажмите examples
  • В fb.api выберите does-like

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

EDIT:
Чтобы проверить, предоставил ли пользователь вашему приложению разрешение, просто используйте этот FQL:

SELECT read_stream,offline_access FROM permissions WHERE uid=me()

Это вернет что-то вроде:

[
  {
    "read_stream": 1,
    "offline_access": 0
  }
]

Чтобы проверить это, просто используйте тестовую консоль, опубликованную на ранней стадии.

РЕДАКТИРОВАТЬ 2:
Чтобы построить связь самостоятельно без XFBML или Javascript, вам просто нужно добавить параметр scope с дополнительными perms (ссылка):

https://www.facebook.com/dialog/oauth?
     client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=publish_stream

Или, если вы используете PHP-SDK:

$loginUrl = $facebook->getLoginUrl(array(
    "scope" => "publish_stream"
));

Ответ 2

Я смотрел на это на днях! Если вы читаете http://developers.facebook.com/docs/authentication, существует несколько разных способов отображения небольшого всплывающего окна для запроса дополнительных разрешений.

Я не уверен, как это работает с Facebook-приложением, но я знаю на веб-сайте с помощью Facebook Connect, если вы попытаетесь запросить разрешения, которые пользователь уже принял, то страница автоматически перенаправляет обратно на redirect_url, который вы набор.