访问授权和访问令牌之间的区别

Difference between Access Grant and Access Token

我搞不懂Doorkeeper中Token和Grant的区别。 Doorkeeper 在哪个时刻创建访问授权,何时创建访问令牌?文档似乎什么也没说,现在我正在阅读代码,但不是十几行。

我假设您在谈论 Web 服务器流程,因为您在 Rails 应用程序中使用 Ruby gem(如您所知,有4 个流)。

通常在 Web Server 流程​​中,Grant 是用户单击 link 以同意授权的时刻:he/she 将被要求授权应用 read/write 数据。

如果同意,应用程序将获得一个临时代码。使用此代码,应用程序将在后台向服务提供商请求 Token

然后,只有使用 Token,应用程序才能使用服务提供商 API。

我建议也阅读 documentation of oauth2
据我了解,Doorkeeper 也是基于该文档中描述的协议。

在doorkeeper中,你会先获得access grant,然后是access token。

访问授权通常只存在很短的时间(doorkeeper 中的默认值为 10 分钟)。 您将通过向 api-url/oauth/authorize 请求 GET 来获得此信息(不要忘记将 client_id、redirect_uri 和 response_type 作为参数。response_type 将具有值“代码”)。

一旦用户允许应用程序(用户单击“允许”按钮),门卫将 return 访问授权作为 returning url 中的参数。 获取该代码,您现在可以使用它向 api-url/oauth/token 发出 POST 请求,以获取您的 access_token 和 refresh_token。

使用access_token,可以限时获取API的资源(Doorkeeper的默认时间是一小时,如果我没记错的话)。 当acces_tooken过期时,使用refresh_token获取新的access_token等。

总之,access grant 是作为用户允许应用程序使用其资源的标志给出的密钥。
访问令牌是允许应用程序在定义的有限时间内使用资源的密钥。

希望对您有所帮助。