7

我的 android 应用程序中唯一的登录选项是通过 Facebook 登录。我想使用 Web 服务 (ASMX),并且对于每个请求,服务器必须验证用户是否通过 facebook 进行了身份验证。我找到了一个解决方案:

1) 从 Android 应用程序向 Facebook 验证用户

2) 获取 FB auth token 到 android app

3) 将身份验证令牌和 facebook UID 从 Android 转发到 Web 服务器

4) 在 Web 服务器上,使用提交的令牌进行 Facebook API 调用。

如果来自 web 服务器的 Facebook API 调用返回有效的身份验证,并且用户 id 等于 Android 应用程序提交的用户 id,则您的服务器可以信任该 id(并且您可以确定 Android 身份验证是真实的)

关联

我的问题是:

  1. 每次向 Web 服务发送请求时,是否必须发送 facebook 用户 ID 和令牌?或者使用 cookie(如果可能的话)
  2. 我必须将 Web 服务注册为 facebook 应用程序吗?我发现了这个: C# Facebook SDK 入门
4

1 回答 1

5

您的解决方案看起来不错。实际上,Android 客户端唯一需要传递给 Web 服务的是身份验证令牌。使用该身份验证令牌,您可以做任何事情,当然还有用户授予的权限。因此,Android 客户端必须向用户询问您的 Web 服务将使用的权限。

对于您的 2 个问题:

  1. 不可以。您应该只发送一次 FB 身份验证令牌。Web 服务器可以从 FB 检索用户信息后,您可以将这些信息保存到 DB(在简单的用户模型中),然后使用您自己的身份验证引擎(cookie、API 令牌等)创建会话

  2. 不需要。您不需要将 Web 服务注册为 FB 应用程序。正如我上面提到的,使用 FB 身份验证令牌可以做很多事情。您还可以查看Facebook Graph API

于 2013-10-21T12:28:08.387 回答