Вы можете рассмотреть Аутентификация на стороне клиента flow или использование JS-SDK с OAuth Dialog , так что вы можете легко избежать указания redirect_uri
, так как это может предоставляется автоматически JS-SDK (или вы можете использовать текущий URL window.location
, как показано в документации по потоку аутентификации на стороне клиента).
Примечания:
Хотя это может помочь вам избежать использования redirect_uri
, настоящая проблема немного глубже ...
Использование redirect_uri
затруднит реализацию такого потока не только из-за невозможности его предсказать, но и из-за требования, что redirect_uri
должен находиться в Домене приложения , то же самое касается использования JS-SDK.
Поэтому, как правило, вам нужно будет указать доменное имя redirect_uri
/ URL-приложения, работающего на , в настройках приложения, что неприятно для многих клиентов / доменов.
Вы можете реализовать поток аутентификации, используя отдельный (общедоступный) хост, но перед тем, как сделать это, полезно задать себе пару вопросов:
- Кто будет отвечать за этот хост и что произойдет со всеми вашими клиентами, если что-то пойдет не так с этим хостом только для аутентификации.
- Это дополнительная зависимость, которую лучше избегать.
- Будете ли вы предоставлять домены всем своим клиентам в настройках приложения?
- Это может привести к нарушению политик платформы при передаче данных третьим сторонам (предварительно проконсультируйтесь с юристом компании)
- Требуется ли вам использовать одно приложение для всех ваших клиентов?
- Если нет, лучше проинструктировать клиентов о настройке приложения и настройке приложения / кода с учетными данными, которые они получили.
Подводя итог:
Вы можете создать отдельное приложение для каждого клиента или поручить клиенту настроить приложение как часть процесса установки / настройки для вашего приложения. Позже вы можете использовать поток аутентификации на стороне клиента для создания универсального кода, который будет работать для каждого клиента (это возможно и для потока на стороне сервера, но потребует некоторой дополнительной работы, а с JS-SDK FB.login
это может быть функциональность раскрытия без дополнительной работы).