关于ios:OAuth2″社交登录”流程(允许通过Facebook / Twitter进行OAuth2身份验证):是否有任何示例/文献?

OAuth2 “social login” flow (allow OAuth2 authentication via Facebook/Twitter): are there any examples/literature?

我正在为基于Web的自定义社交网络应用程序开发本机移动应用程序。我们正在构建一个REST API以与Web服务器通信,并且我们选择了OAuth2作为身份验证方法(grant_type=password流)。

该Web应用程序允许用户使用外部服务(例如Facebook和Twitter)登录和注册。我们还需要在移动应用程序上允许同样的操作。问题是:我们该怎么做?

Pinterest移动应用程序可以管理当前情况(请参见所附图像)。这里使用的流程是什么?

Pinterest Login View

它们的行为是否像基于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授权类型(即facebook_token)吗?


您可以尝试使用刚刚在移动设备上检索到的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的界面),以允许他们接受/拒绝第三方请求的权限范围。在最初的社交登录位上,您显然必须传递一个较长的时间或存储第三方请求的范围,以使其长时间传递给社交提供程序回调步骤。