Глядя на подключение Google OpenId и вход в Facebook, я заметил, что Facebook всегда использует «URI перенаправления» из браузера. Чтобы объяснить немного больше - когда пользователь переходит по ссылке формы
https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}
Он/она всегда перенаправляется на URL-адрес, указанный {redirect-uri}. Затем этот URL-адрес содержит «код», который можно обменять на токен доступа.
У Google аналогичный подход, но при использовании «серверного потока» {redirect-uri} «поражается» серверами Google. Таким образом, код, который необходимо обменять на токен доступа, никогда не будет показан пользователю.
Похоже, что подход FB менее безопасен, поскольку код доступа может оказаться в руках злоумышленника.
- Есть ли способ, чтобы FB отправлял код на URI перенаправления, но не перенаправлял клиента? Что-то вроде того, что делает Google.
- Есть ли у кого-нибудь хорошее объяснение, почему FB не имеет поведения, подобного «серверному потоку», а только «неявный поток»?