OAuth2"社交登录"流程(允许通过Facebook/Twitter进行OAuth2身份验证):有任何示例/文献吗?

Ste*_*rna 18 api ios oauth-2.0 facebook-oauth ios5

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

Web应用程序允许用户使用外部服务(即Facebook和Twitter)登录和注册.我们还需要在移动应用上允许相同的内容.问题是:我们怎么做?

Pinterest移动应用程序能够管理这种情况(参见附图).这里使用的流量是多少?

Pinterest登录视图

它们的行为类似于经典的OAuth驱动的应用程序(移动应用程序直接使用Facebook API充当OAuth客户端吗?).如果是这样,那么移动应用程序如何通过Pinterest服务器进行身份验证?它是否将Facebook OAuth访问令牌作为凭据传递?

问题的图形表示(请参阅????-labeled arrow):

Website API                 Mobile app                    Facebook OAuth

  +                           +                               +
  |                           |                               |
  |                           |       /oauth2/token           |
  |                           +------------------------------>|
  |                           |                               |
  |                           |       OAuth Access Token      |
  |                           |<-----------------------------+|
  |                           |                               |
  |           ????            |                               |
  |- - - - - - - - - - - - - -|                               |
  |                           |                               |
  |                           |                               |
  |    OAuth Access Token     |                               |
  |+------------------------->|                               |
  |                           |                               |
  |                           |                               |
  |   API Usage (w/ token)    |                               |
  |+------------------------->|                               |
  |<-------------------------+|                               |
  |                           |                               |
  |+------------------------->|                               |
  |<-------------------------+|                               |
  |                           |                               |
  |           ...             |                               |
  +                           +                               +
Run Code Online (Sandbox Code Playgroud)

更新: 这个问题与我的问题非常相似 ..如果这是正确的路径,那么第二步+第三步(将Facebook令牌传输到我们的自定义API,再加上令牌本身的验证)就不能了额外的OAuth2授权类型(即facebook_token)?

Gia*_*iRG 2

我不是 iOS 开发人员,但我目前正在 .NET 环境中使用开源 DotNetOpenAuth 库开发类似的工作流程。也许看看它会有所帮助。

\n\n

首先:身份验证方法取决于您想要支持的提供商。

\n\n

一些可能会澄清的读物:
\n http://softwareas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theyre-the-same-thing \nhttp:/ /openid.net/get-an-openid/what-is-openid/
\n http://blog.bobcravens.com/2010/08/openid-and-oauth-using-dotnetopenauth-in-asp-net-mvc / \nhttp://stackoverflow.com/questions/7996124/how-to-authorize-mobile-apps-with-a-third-party-by-oauth-but-connect-to-my-servi

\n\n

通用身份验证工作流程:
\n1. Web 应用程序首先显示一个区域,允许用户在各种 OpenID / OAuth 提供商之间进行选择。
\n2. 您的应用程序重定向到提供商\xe2\x80\x99s 服务器(可能会在发布数据中添加一些应用程序信息之后 - 有关详细信息,请参阅特定提供商的 API 参考)。OpenID 和 OAuth 都使用一系列重定向来对用户进行身份验证。关键是身份验证发生在提供者\xe2\x80\x99s 站点以及存储密码的\xe2\x80\x99s 站点上。
\n3. 用户登录所选的提供商,然后会发生到您站点的新重定向(通过回调 URL 机制)。
\n4. 此重定向包括有关由 OpenID / OAuth 提供商提供的经过身份验证的用户的信息。重定向至少将 \xe2\x80\x98username\xe2\x80\x99 提供回您的应用程序。
\n5. 使用此信息来验证经过身份验证的用户是否可以进入您的站点。

\n