Oauth 如何为单个用户帐户多次授权同一第三方应用程序?

Oauth 如何为单个用户帐户多次授权同一第三方应用程序?,oauth,Oauth,我正在开发一个通过OAuth授权的云存储API。第三方应用程序的用户可以允许该应用程序通过我们的RESTful API访问他们的文件/数据 目前,我们正在限制第三方应用对用户帐户的访问一次。例如,访问令牌表在consumer列和user列上具有唯一性。乍一看,这是有道理的,因为用户不应该被发送到我们的服务来授权第三方应用程序两次,因为第三方已经知道他们的用户已经绑定到我们的服务,并且不需要重新授权 但是,如果该用户在第三方应用程序上有两个帐户,并且他们希望该应用程序连接到他们在我们服务上的单个帐

我正在开发一个通过OAuth授权的云存储API。第三方应用程序的用户可以允许该应用程序通过我们的RESTful API访问他们的文件/数据

目前,我们正在限制第三方应用对用户帐户的访问一次。例如,访问令牌表在consumer列和user列上具有唯一性。乍一看,这是有道理的,因为用户不应该被发送到我们的服务来授权第三方应用程序两次,因为第三方已经知道他们的用户已经绑定到我们的服务,并且不需要重新授权

但是,如果该用户在第三方应用程序上有两个帐户,并且他们希望该应用程序连接到他们在我们服务上的单个帐户两次,该怎么办?考虑到Reddit等服务上多个账户的普遍存在,这似乎是可能的

以下是我迄今为止提出的可能的解决方案,没有一个是完美的:

在第二次身份验证请求期间显示一个错误:这对用户来说似乎是一次令人沮丧的经历,是一种莫名其妙的逃避。 删除上一个令牌:这可能会激怒用户,因为他们以前的帐户停止工作。即使我们发出警告,也很难解释到底发生了什么。 返回与第一个请求相同的访问令牌:每次请求访问时,都会传递一组权限。第二个请求的权限可能与第一个请求的权限不同。另外,不确定这是否会违反OAuth规范,因为第二个生成的请求令牌没有正确地绑定到访问令牌。 允许生成两个:这会让人困惑,因为当用户访问满是授权应用程序的屏幕来撤销一个时,他们不知道哪个授权与哪个第三方帐户绑定。当生成请求令牌以标识不同的身份时,我们可以请求一个可选的第三方用户名参数。我们目前已经请求了一个非OAuth标准权限参数。但是,这似乎不会被99%的开发人员使用,并且可能会使应用程序开发更加混乱。
处理这种情况的最佳方法是什么?是否有处理此用例的标准化实践?

我认为您的最后一个用例是正确的方法-允许生成两个

当用户访问满是授权应用程序的屏幕时,不必向他显示同一个应用程序两次-如果用户撤销应用程序访问,您只需删除与应用程序关联的令牌。也就是说,他对应用程序的所有授权以及所有令牌都将随着撤销而消失,这很好