0

我正在尝试构建一个经过 Facebook 身份验证的本机移动应用程序(Windows Phone),该应用程序连接到我在 Node.js 中创建的 Web 服务。

我希望用户:

  • 通过本机 UI 或 Web 窗口在移动应用上登录 Facebook
  • 如果登录成功,创建或访问与该身份相关的服务器端用户帐户数据
  • 使用经过身份验证的会话通过本机移动应用程序向该用户的数据发出后续经过身份验证的请求

我的问题是:这里最好的方法是什么?

我是不是该...

  1. 在移动应用程序中本地登录客户端到facebook并将访问令牌传递给节点服务,然后根据他们的facebook帐户ID以某种方式将用户映射到我的服务数据?如果我只是在 URL 中传递该令牌,那似乎非常不安全。
  2. 通过我的应用程序内的移动浏览器窗口登录用户,然后在同一窗口中重定向回我的节点服务?然后如何在我的应用程序中本地发出后续经过身份验证的请求?
  3. 完全做其他事情吗?

抱歉,这是开放式的,但这是我第一次将这些东西联系在一起,虽然每个部分都有很多信息,但我还没有找到描述这个设计的整体模式/最佳实践的东西。

4

1 回答 1

1

你的问题是基于意见的......但我仍然会尽力提供帮助。

首先,您可以在 url 中传递访问令牌,如果您使用 https,它不是不安全的。即使从您的移动应用程序登录到 facebook,它也只会在 url 中传递访问令牌。如果您的意思是在http://something.com/access_token中拥有令牌,那么它不是应该如何完成的。

如果您查看 Oauth 2.0 草案,您将了解它是通过设置标头 Authorization 完成的,其值为 token 和 token_type。好好看看草稿。

作为您的解决方案,我认为如果您只使用问题中提到的第一种方法,如我在您的应用程序中提到的那样在标头中发送访问令牌,然后在每个请求中从 facebook 验证该令牌,那么这很好。如果您认为验证来自 facebook 的每个请求的流程太长,那么您可以通过从移动应用程序向服务器发送请求并让服务器处理访问令牌并将其存储在数据库中来获取访问令牌,您可以对每个请求进行身份验证要求。无论如何,看看Passport模块,它内置了 facebook 和其他身份验证,应该足以满足您的需求。

于 2013-07-10T05:13:12.017 回答