Тип приложения Facebook: какой из них выбрать для мобильных и веб-сайтов?

в настройках приложения Facebook ☞ Расширенная Authentication аутентификация я могу выбрать "веб" или "родной/рабочий стол" в качестве типа приложения. Информационный пузырь говорит:

выберите только Native / Desktop, если вы являетесь родным приложением iOS или Android, устройство или настольное приложение

на самом деле я ни один из них, но мое приложение является родным приложением iOS, а также вкладкой страницы Facebook.
вопрос: какой тип приложения я должен выбрать?


Я сделал некоторые исследования и нашел следующее в Facebook Android Учебник (в разделе Устранение неполадок):

  • Тип приложения Web vs Native / Desktop. Разве это имеет значение?: нет, это не вопрос. Однако рекомендуется использовать тип "Native / Desktop" для ваше приложение.

что это значит не важно? Это не имеет смысла для меня. Тогда почему у меня должен быть выбор?

Я сделал еще несколько исследований Так и нашли данное заявление by @Igy (инженер поддержки разработчиков на Facebook):

Если тип приложения установлен в "Native / Desktop", предполагается, что вы распределенный секретный ключ приложения с двоичным кодом, и, таким образом, приложение маркер доступа не является доверенным (и "getAccessToken" в PHP SDK будет работает только при входе реальных пользователей, он не может вернуться к маркеру приложения)

наконец-то я нашел это в Facebook документация:

Примечание: приложения, настроенные как собственные / настольные приложения, не будут возможность совершать вызовы API, для которых требуется приложение access_token.

Мне нужно сделать вызовы API, которые требуют маркера доступа из моего приложения вкладки страницы, поэтому мой вывод-выбрать " веб " в качестве типа приложения, хотя у меня есть собственное приложение iOS, использующее тот же идентификатор приложения, что и приложение вкладки страницы. Но будет ли это иметь какие-либо недостатки в приложении iOS?

1 ответов


TL; DR: используйте "web", если вы не помещаете секрет приложения в двоичный файл iOS / Android

основное различие (а также причина, по которой он говорит "это не имеет значения", а также дает рекомендацию) заключается в том, что если вы выбираете режим "родной/рабочий стол", предполагается, что вы распространяете двоичный файл приложения с секретом приложения, встроенным, и секрет приложения считается ненадежным.

в этой конфигурации вызовы API, которые используют секрет приложения (например, создание теста пользователи, делая вызовы API от имени самого приложения, такие как изменение настроек приложения, чтобы воскреснуть и т. д.) не будет работать.

Если вашему приложению не нужно использовать маркер доступа App secret / app, установка его на native / desktop повышает безопасность, поскольку для вашего приложения на один вектор атаки меньше.

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