1

查看 Google OpenId 连接和 Facebook 登录,我注意到 Facebook 总是从浏览器中点击“重定向 URI”。解释一下 - 当用户点击表单的链接时

https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}

她/他总是被重定向到 {redirect-uri} 指定的 URL。然后,此 URL 包含可以交换访问令牌的“代码”。

谷歌有类似的方法,但是当使用“服务器流”时,{redirect-uri} 被谷歌的服务器“命中”。这样,需要交换访问令牌的代码永远不会显示给用户。

看起来 FB 的方法不太安全,因为访问代码实际上最终会落入攻击者的手中。

  1. 有没有办法让 FB 将代码发送到重定向 URI 但实际上不重定向客户端?类似于谷歌所做的事情。
  2. 有没有人很好地解释为什么 FB 没有类似“服务器流”的行为,而只有“隐式流”?
4

1 回答 1

3

您应该从服务器获取代码,然后将其与您的应用程序密码一起使用,以在 Facebook 上交换访问令牌。客户端是否可以看到这一点并不重要,因为没有应用程序机密,该代码将毫无用处。并且应用程序机密保存在您的服务器上,永远不会向客户端透露。

于 2014-08-24T13:50:26.807 回答