我想让我的用户能够将他们的用户帐户与 Facebook 或 Twitter 相关联,并允许他们使用 Facebook/Twitter 帐户登录我的服务器,而不是使用经典的用户名/密码。和登录的思路基本一样堆栈溢出 https://stackoverflow.com/users/login-add.
我目前对 Facebook 的态度:
客户端应用程序将执行 OAuth,然后使用他们的 Facebook ID 登录我的服务器。根据此 Facebook ID,服务器将查找关联的用户帐户并执行登录,而无需询问用户名/密码。然而,仅仅依靠 Facebook ID 登录并不是很安全,因为这与仅使用用户名而不是用户名和密码登录是一样的。
因此,为了确保 Facebook id 的真实性,客户端应用程序还将提供 FBSR(Facebook 签名请求,请参阅:https://developers.facebook.com/docs/facebook-login/using-login-with-games/#checklogin https://developers.facebook.com/docs/facebook-login/using-login-with-games/#checklogin)与登录请求。
服务器将使用此 FBSR 检查两件事:
请求中的 Facebook id 必须与 FBSR 中隐藏的 Facebook id 相同
服务器将通过 Facebook 密钥重新计算签名部分。这必须与 FBSR 中的签名匹配。
通常,服务器应使用 oauth_token 与 Facebook 服务器进行检查,以 100% 确定用户身份。不过我需要跳过这个以避免依赖我们服务器上的 Facebook 服务器。
我有两个问题:
1)上述方法足够好吗?是否可以改进(无需服务器到服务器通信)?
2) 我想对 Twitter 帐户执行相同的操作,但他们签名的请求与 Facebook 不同。看来 Twitter 用户 ID 嵌入在 oauth_token 中,所以我的方法可能需要稍加调整,但我不确定用户 ID 是否始终是 oauth_token 的一部分,并且在搜索互联网后无法得到确认。
我认为您的方法足够好,并且没有看到任何方法可以避免使用签名请求进行服务器到服务器的通信。请记住,在 Facebook Graph Api 版本 2 中,为了保护用户的隐私,Facebook 不会发送真实的用户 ID,而是发送为应用程序生成的用户 ID。还可以启用匿名登录。
我不确定你想用 Twitter 做什么,以及为什么要比较这些 API(它们非常不同)。这推特登录 https://dev.twitter.com/docs/auth/sign-twitter,也称为使用 Twitter 登录,用于任何网站或移动应用程序,也应该适合您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)