2013-05-13 66 views
1

我正在研究通过OAuth授权的云存储API。第三方应用程序的用户可以允许所述应用程序通过我们的RESTful API访问他们的文件/数据。如何为单个用户帐户多次处理相同的第三方应用程序授权?

目前,我们限制第三方应用访问用户帐户一次。例如,Access Token表在消费者列和用户列上有一个UNIQUE。这乍一看是有道理的,因为用户决不应该被发送到我们的服务来授权第三方应用程序两次,因为第三方已经知道他们的用户已经被绑定到我们的服务并且不需要重新-authorized。

但是,如果此用户在第三方应用上有两个帐户,并且他们希望所述应用连接到我们的服务上的单个帐户两次?这看起来很可能,因为在Reddit等服务上存在多个帐户。

以下是可能的解决方案我已经出来,到目前为止,没有人是完美的:

  • 显示第二身份验证请求期间的错误:这似乎是对用户的困扰, ,一个“警察出局”的种类。
  • 删除以前的令牌:这可能会惹恼用户,因为他们以前的帐户停止工作。即使我们显示警告,也很难解释究竟发生了什么。
  • 返回与第一个请求相同的访问令牌:每次请求访问时,都会传递一组权限。第二个请求的权限可能与第一个请求的权限不同。此外,不确定这是否会违反OAuth规范,因为第二次生成的请求令牌没有正确绑定到访问令牌。
  • 允许生成两个:这会引起混淆,因为当用户访问他们的屏幕时,充满授权应用程序以撤消其授权,他们不知道哪个授权与哪个第三方帐户绑定。当生成请求令牌以识别不同的验证码时(我们当前要求提供非OAuth标准的permission参数),我们可以要求提供可选的第三方username参数。但是,这看起来似乎不会被99%的开发人员使用,并可能使应用程序开发更加混乱。

处理这种情况的最佳方法是什么?有没有一个标准化的做法来处理这个用例?

回答

0

我认为你最后的情况下是正确的方式去 - 允许两到生成

当用户访问他的画面充满授权的应用程序,它没有必要向他展示同一个应用程序两次 - 如果用户撤销应用程序访问权限,则只需删除与该应用程序关联的令牌。也就是说,他对所有令牌的应用授权都会随着撤销而消失,这很好。

相关问题