用于社交网络自己的移动应用的API身份验证方法

时间:2011-10-31 13:16:19

标签: oauth xauth

众所周知,像Twitter这样的社交网络,Facebook拥有自己的移动应用程序。其他第三方应用程序使用其API,只有在注册应用程序后才能通过OAuth协议进行身份验证。

那么Facebook,Twitter,Foursquare等如何通过“用户名”和“密码”进行身份验证来访问自己的移动应用上的API?我不认为他们只是在每个请求上发送用户名和密码作为参数。

更重要的一点是,当您登录这些官方移动应用时,您没有遇到网络界面,要求获得许可,并且在OAuth流程中有“允许此应用”按钮。它们默认是经过身份验证的!

在调查时我遇到了 XAuth ,但在观看其介绍性视频后,它似乎是浏览器上的共享存储。我不是在寻找,然后我遇到了 xAuth in Twitter 。它通过SSL发送一次用户名/密码进行身份验证,然后服务器发出OAuth令牌/密钥对。 (这看起来像OAuth v1而不是v2,这并不酷。)

看起来我正在寻找但我不太确定。除了维护xAuth所需的OAuth服务器之外,还有其他选择吗?因为在我的用例中,可能根本不存在第三方应用程序。

1 个答案:

答案 0 :(得分:2)

在这些情况下,官方应用程序只使用他们想要的任何身份验证。我认为将OAuth和XAuth用于非官方应用程序的目的是允许某些第三方访问(1)可以被用户撤销,以及(2)不要求第三方拥有用户名/用户自己的密码。事实上,在更广泛采用OAuth等之前,需要您的用户名和密码的第三方应用程序非常普遍。只有在Facebook关闭此类访问权限之后,OAuth方法才变得更常用(在他们的情况下)。

对于官方应用,没有理由通过OAuth,因为要获得OAuth身份验证令牌,您无论如何都必须输入用户名和密码。在官方应用程序的情况下,这将使这个多余,不必要。

官方应用程序也可以与一组专用的身份验证服务器通信,这些服务器只接受来自移动应用程序的登录,移动应用程序可能会提供一些特殊的额外信息,将其标识为官方应用程序或其他一些机制。用于验证的用户名和密码的顶部。我不是Facebook开发人员,所以我不知道。但我的观点是,Facebook / Twitter可能有一个单独的基于API密码的登录,并且该API只能通过Web界面和其他官方登录模式访问。

因此,在您的情况下,如果您正在构建社交网络(或任何具有移动访问权限的Web服务),只需使用基于密码的标准登录名为您的官方应用程序,但不要使该登录方法可用给大家。如果您希望通过API允许第三方访问,您确实需要设置OAuth / XAuth服务器来执行此操作,以保持用户的密码仅在您的控制之下(并且不会泄露给第三方组/网站/应用)。