OAuth2 “social login” flow (allow OAuth2 authentication via Facebook/Twitter): are there any examples/literature?
我正在为基于Web的自定义社交网络应用程序开发本机移动应用程序。我们正在构建一个REST API以与Web服务器通信,并且我们选择了OAuth2作为身份验证方法(
该Web应用程序允许用户使用外部服务(例如Facebook和Twitter)登录和注册。我们还需要在移动应用程序上允许同样的操作。问题是:我们该怎么做?
Pinterest移动应用程序可以管理当前情况(请参见所附图像)。这里使用的流程是什么?
它们的行为是否像基于OAuth的经典应用程序(移动应用程序直接通过Facebook API充当OAuth客户端?)。如果是这样,那么如何通过Pinterest服务器对移动应用进行身份验证?它是否将Facebook OAuth访问令牌作为凭据传递?
问题的图形表示(请参见
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Website API Mobile app Facebook OAuth + + + | | | | | /oauth2/token | | +------------------------------>| | | | | | OAuth Access Token | | |<-----------------------------+| | | | | ???? | | |- - - - - - - - - - - - - -| | | | | | | | | OAuth Access Token | | |+------------------------->| | | | | | | | | API Usage (w/ token) | | |+------------------------->| | |<-------------------------+| | | | | |+------------------------->| | |<-------------------------+| | | | | | ... | | + + + |
更新:这个问题与我的非常相似。如果这是正确的方法,那么第二步(将Facebook令牌传输到我们的自定义API,再加上令牌本身的验证)就不可能了"是其他OAuth2授权类型(即
您可以尝试使用刚刚在移动设备上检索到的fb访问令牌。 (可以是任何其他提供程序)。将其发送到您的服务器,以进行登录/注册/两个Web服务。在服务器端,您可以使用fb sdk和访问令牌来检查谁是用户,登录用户并向其发送cookie /会话。
我不是iOS开发人员,但是我目前正在使用开源DotNetOpenAuth库在.NET环境中开发类似的工作流程。也许看看它会有所帮助。
首先:身份验证方法取决于您要支持的提供程序。
一些可以澄清的读数:
http://softwareas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theyre-the-same-thing
http://openid.net/get-an-openid/what-is-openid/
http://blog.bobcravens.com/2010/08/openid-and-oauth-using-dotnetopenauth-in-asp-net-mvc/
http://stackoverflow.com/questions/7996124/how-to-authorize-mobile-apps-with-a-third-party-by-oauth-but-connect-to-my-servi
通用身份验证工作流程:
1. Web应用程序首先显示一个区域,该区域允许用户在各种OpenID / OAuth提供程序之间进行选择。
2.您的应用程序重定向到提供商的服务器(在可能的情况下,将一些应用程序信息添加到发布数据中-有关详细信息,请参见特定提供商的API参考)。 OpenID和OAuth都使用一系列重定向来对用户进行身份验证。关键是身份验证在提供商的网站上进行,并且是密码的存储位置。
3.用户登录所选的提供程序,然后发生新的重定向到您的站点(通过回调URL机制)。
4.此重定向包括由OpenID / OAuth提供程序提供的有关已认证用户的信息。重定向至少可以为您的应用提供一个"用户名"。
5.使用此信息来验证通过身份验证的用户是否可以进入您的站点。
Stefano
我们为此使用StackMob。它工作得很好,并且实现起来非常简单。
StackMob SDK通过Facebook和Twitter提供OAUTH2安全性和身份验证。
更新:截至2014年5月,StackMob不再存在
为您的社交登录提供商创建不同的OAuth客户端ID。
示例:
Facebook-客户端ID#1
Twitter-客户端ID#2
为您的社交活动创建公共路线。
示例:
http://www.test.com/auth/facebook/
http://www.test.com/auth/facebook/callback/
在社交提供程序回调成功后,您需要以编程方式从数据存储中为相关用户获取数据,然后生成具有您想要为相关客户ID授予的任何预定义范围的访问令牌。<铅>
如果您有一个第三方直接尝试通过尝试使用您的API与自己的客户进行交互,则必须分两步进行。
首先,他们(客户)必须按照前面的说明进行社交登录过程。
然后,在成功的社交提供程序回调中,您需要向客户显示一个界面(可能是基于Web的界面),以允许他们接受/拒绝第三方请求的权限范围。在最初的社交登录位上,您显然必须传递一个较长的时间或存储第三方请求的范围,以使其长时间传递给社交提供程序回调步骤。