2011-02-08 3 views
21

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

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

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

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

ответ

19

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

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

Так, например, вы выше спрятаны в DIV и если пользователь отметьте флажок вы показать DIV и предложит новый разрешение!

Хороший живой пример этого на Facebook Test Console:

  1. Нажмите логин, чтобы "добавить" приложение
  2. Затем нажмите на examples
  3. Под fb.api выбрать does-like

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

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

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

Это возвращает что-то вроде:

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

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

EDIT 2:
Для построения ссылки самостоятельно без XFBML или Javascript, вам просто нужно добавить параметр scope с дополнительными завивками (reference):

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" 
)); 
+1

Я вижу, что вы используете FBML для создания кнопки входа в систему. Как насчет использования PHP SDK и метода oauth_redirect? Вот где он не соблюдает дополнительные разрешения. –

+0

@ScottC: обновил мой ответ. – ifaour

0

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

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