Fb身份验证过程似乎是:
这个获得的访问令牌最终会过期,然后我只需要用户再次登录以提供更新的访问令牌。
但是在使用FBSDKLoginKit的iOS上,我可以直接获得访问令牌而不涉及任何服务器。那么第一个更复杂的流程的重点是什么?为什么fb不直接向Web客户端发布访问令牌(可以将其转发到我的服务器)?为什么Web客户端和移动客户端之间的情况有所不同?
答案 0 :(得分:1)
OAuth 2.0标准在breakdown of client types:
中解决了这个问题基于用户代理的应用
基于用户代理的应用程序是公共客户端,其中客户端代码从web服务器下载并在资源所有者使用的设备上的用户代理(例如,web浏览器)内执行。协议数据和凭证可以轻松访问(并且通常可见)资源所有者。由于此类应用程序驻留在用户代理中,因此它们可以在请求授权时无缝使用用户代理功能。
原生申请
本机应用程序是在资源所有者使用的设备上安装和执行的公共客户端。资源所有者可以访问协议数据和凭证。假设可以提取应用程序中包括的任何客户端认证凭证。 另一方面,动态发布的凭证(如访问令牌或刷新令牌)可以获得可接受的保护级别。至少,这些凭证受到保护,以免受应用程序可能与之交互的恶意服务器的影响。在某些平台上,这些凭据可能会受到驻留在同一设备上的其他应用程序的保护。 [强调我的]
显然,Facebook正在遵循这一建议并假设原生应用程序 - 而不是Web应用程序 - 可以保护访问令牌。