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

使用OAuth但在我自己的数据库中存储额外信息,oauth,windows-phone-8,Oauth,Windows Phone 8,我已经研究OAuth一段时间了,但还没有在我的任何应用程序中实现它。我很难真正理解完整的概念,所以我仍然有一些问题没有找到答案,所以我希望任何人都能帮助我 我希望用户能够启动我的应用程序(WP8),登录到facebook/twitter/microsoft/。 当他通过身份验证时,我想把这个用户保存到我自己的数据库中,这样我就可以添加一些特定于用户的东西,比如首选项、帖子等等 我需要在自己的数据库中保存什么来指定用户? 我是否需要保存令牌本身,或者这是否会在一段时间后失效?或者我需要指定用户名吗

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

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

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

当用户通过facebook等身份验证并删除其帐户时会发生什么情况

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

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

亲切问候,


Gert

我假设您有自己的后端,在那里您可以验证自己的用户,而您的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帐户时,会调用此函数。当您收到此呼叫时,您可以在通过身份验证链接设置其他凭据时向用户发送电子邮件,以避免失去访问权限

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

当然,你可以这么做。假设您也希望允许使用Twitter帐户。您需要将Twitter用户ID字段添加到您的用户配置文件数据库中

这里还有一个技巧:在VisualStudio中创建一个ASP.NETMVC4项目-该模板包括一个如何使用OAuth登录设置用户配置文件数据库的示例


希望它能为您提供更高层次的概述,以便进一步调查。

感谢您的详细解释!这真的帮助我更好地理解了它,我将很快测试它!