使用OAuth但在我自己的数据库中存储额外信息

Ger*_* C. 4 oauth windows-phone-8

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

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

我需要在自己的数据库中保存以指定用户?我是否需要自己保存令牌,或者这会在一段时间后失效吗?或者我是否需要指定用户名?换句话说:我可以将哪些用作唯一标识符?

当用户使用例如facebook进行身份验证并删除其帐户时会发生什么?

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

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

亲切的问候,

格特

New*_*Dev 7

我假设你有自己的后端,你认证自己的用户,你的WP8应用程序只是一个客户端.

首先,让我区分用户凭证和用户配置文件.用户凭证可以验证用户是谁,例如用户名/密码,提供有效身份验证令牌的facebook用户ID.用户配置文件是您在自己的数据库中存储的有关用户的信息.

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

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

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

创建包含用户数据(如首选项和您的唯一用户ID)和用户登录方法(例如Facebook)和凭证(例如Facebook的用户ID)的记录.这是您的用户个人资料.

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

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

换句话说:我可以将哪些用作唯一标识符?

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

当用户使用例如facebook进行身份验证并删除其帐户时会发生什么?

让用户仍然创建与您的网站一起使用的用户名/密码组合,并且仅为了方便而依赖Facebook登录,这是一个好主意.无论如何,当您在Facebook上创建应用个人资料时,Facebook会提供"取消授权回拨网址".当用户停用您的应用或删除Facebook帐户时,会调用此方法.当您收到此呼叫时,您可以在auth链接时向用户发送电子邮件,以设置不同的凭据,以免失去访问权限.

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

当然,你可以做到这一点.假设您也想要允许Twitter帐户.您需要将Twitter用户ID字段添加到您的用户配置文件数据库.

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

希望它能为您提供进一步调查的高级概述.