Я также изучаю, насколько безопасна аутентификация - я думаю, что все изменилось с тех пор, как вы задали этот вопрос, поэтому, возможно, эта информация была неверной, когда вы спросили.
Новая версия JS SDK использует OAuth 2.0. Это хорошо задокументировано - за подробностями обращайтесь на сайт OAuth 2.0 .
Что касается вопроса о том, нужен ли SDK секрет приложения - у меня возникла небольшая путаница в связи с этим. На стороне сервера приложений библиотеки указывают, что JS SDK подписывает куки-файлы, используя секрет приложения (см. Функцию get_user_from_cookie в facebook-python sdk ) - однако мне совершенно неясно, как JS SDK может знать секрет приложения. Я предполагаю, что он может получить его динамически от FB, когда он общается с FB непосредственно в процессе аутентификации, но я не уверен.
(Изменить: я думаю, что JS SDK получает cookie, подписанный с секретом приложения напрямую от FB - JS SDK никогда не знает секрет приложения).
Не полностью отвечаю на ваш вопрос, но, возможно, пролив немного больше света на то, как это работает.