5

我一直在研究 OAuth,但还没有在我的任何应用程序中实现它。我很难真正理解完整的概念,所以我还有一些问题没有找到答案,所以我希望任何人都可以帮助我。

我希望用户能够启动我的应用程序(WP8),登录到 facebook / twitter / microsoft / ...。当他通过身份验证时,我想将这个用户实际保存到我自己的数据库中,这样我就可以添加一些用户特定的东西,比如首选项、帖子……。

我需要在自己的数据库中保存什么来指定用户?我是否需要保存令牌本身,或者这是否会在一段时间后失效?还是我需要指定用户名?换句话说:我可以使用什么作为唯一标识符?

当用户通过例如 facebook 进行身份验证并删除他的帐户时会发生什么?

还有一个问题,您是否允许用户连接到具有 2 个不同服务提供商的应用程序?如果是这样,您将如何将这 2 个提供程序耦合到您自己的数据库中的 1 个用户?

我希望我的问题足够清楚!如果没有,请不要犹豫,询问更多信息!

亲切的问候,

格特

4

1 回答 1

9

我假设您有自己的后端,您可以在其中验证自己的用户,而您的 WP8 应用程序只是一个客户端。

首先,让我区分用户凭证和用户配置文件。用户凭证是验证用户是谁的东西,例如用户名/密码、提供有效身份验证令牌的 facebook 用户 ID。用户配置文件,是您在自己的数据库中存储的关于用户的内容。

您还需要区分用于验证用户身份的令牌和 Facebook 需要授予您访问用户数据的权限的 AccessToken。

所以......回答你的问题:

我需要在自己的数据库中保存什么来指定用户?

使用用户数据(如偏好和您的唯一用户 ID)以及用户的登录方法(例如 Facebook)和凭据(例如 Facebook 的用户 ID)创建一个记录。这是您的用户的个人资料。

我是否需要保存令牌本身,或者这是否会在一段时间后失效?

如果您已被 Facebook 授予“离线访问”权限,您也可以在此处存储 Facebook AccessToken,但这用于 Facebook 的访问……而不是用户访问您的应用程序/后端。对于用户的访问,您可以使用类似于基于 cookie 的身份验证的机制 - 这取决于您。您可以将 AccessToken 用作一种“cookie”,但您需要始终检查 Facebook 是否有效。

换句话说:我可以使用什么作为唯一标识符?

您可以将 Facebook 的 ID 视为唯一的(只要您绝不允许用户个人资料数据库中的另一个帐户同一个 Facebook 帐户链接)

当用户通过例如 facebook 进行身份验证并删除他的帐户时会发生什么?

让用户仍然创建与您的站点一起使用的用户名/密码组合并且仅依赖 Facebook 登录以方便使用是一个好主意。在任何情况下,当您在 Facebook 上创建应用配置文件时,Facebook 都会提供“取消授权回调 URL”。当用户停用您的应用程序或删除 Facebook 帐户时调用此方法。当您收到此电话时,您可以在身份验证链接时向您的用户发送电子邮件以设置不同的凭据,以免失去访问权限。

你会允许用户连接到具有 2 个不同服务提供商的应用程序吗?如果是这样,您将如何将这 2 个提供程序耦合到您自己的数据库中的 1 个用户?

当然,你可以这样做。假设您也想允许 Twitter 帐户。您需要将 Twitter 用户 ID 字段添加到您的用户资料数据库。

这是另一个提示:在 Visual Studio 中创建一个 ASP.NET MVC4 项目 - 该模板包含一个示例,说明如何使用 OAuth 登录设置用户配置文件数据库。

希望它为您提供高级概述以进一步调查。

于 2013-07-15T16:55:01.390 回答