【问题标题】:Can I use Asana access_token in the backend?我可以在后端使用 Asana access_token 吗?
【发布时间】:2016-08-31 10:20:29
【问题描述】:

我有一个 Angular 应用程序作为前端客户端和一个 Rails 后端 API。我想访问 Asana 的 API,并想通过 Angular 应用程序对其进行授权,所以我正在关注他们的 OAuth 流程,称为Implicit Grant Flow

在授权过程之后,我得到一个access_token,但是当我尝试在 Postman 上使用此代码时(为了测试我将在后端实现的 API 调用)我得到一个 401,而不是授权代码。

有没有办法让用户通过 Angular 进行授权,然后将此 access_token 交换为永久令牌/代码,以便在后端进行后续调用?

如果不需要,每次我需要访问 API 时是否需要让用户授权?

编辑

这是我尝试将 access_token 与 Postman 一起使用的屏幕截图:

注意在我授权应用程序几分钟后,我在 Postman 上尝试了上述操作,所以我想令牌仍然有效。

【问题讨论】:

    标签: angularjs asana asana-api


    【解决方案1】:

    我猜access_token 在您开始测试之前就过期了。访问令牌是短暂的(Asana 访问令牌目前在一小时后过期)。如果不是这种情况,您能否发布您向 Postman 提出的请求(已编辑机密)?

    如果您想要更长的授权,您应该使用authorization code grant 来获取刷新令牌而不是访问令牌。然后,您可以在需要访问 API 时将刷新令牌交换为临时访问令牌(Asana 客户端库会隐式处理此问题)。

    【讨论】:

    • 我想有两个问题:1)我出错了,因此 Postman 上的错误和 2)无论如何,我想获得一个永久令牌,以便它可以重复使用(刷新随时需要)。如果我理解正确,除非我在后端进行身份验证,否则我无法获得Authorization Code Grant,所以我希望有一种方法可以让我将access_token 换成永久的?
    • 首先是您的 Postman 请求的问题:Asana 将 Authorization: Bearer somecode 作为标头而不是查询参数。如果您想将访问令牌作为查询参数传递,您可以在access_token 参数中传递它(如https://app.asana.com/...?access_token=somecode)。我将在单独的评论中讨论 2)。
    • 没有办法用访问令牌交换刷新令牌,因为访问令牌的目的是比刷新令牌更不安全。我还应该补充一点,一旦用户授权您的应用程序,后续重定向到隐式授权端点不应要求用户再次单击。这是在客户端上处理身份验证的正确方法:如果没有 Asana API 客户端密码,您就不能使用刷新令牌,这是您不希望在客户端上使用的。如果您需要服务器上的长期令牌,那么您应该在后端使用授权码授予。
    猜你喜欢
    • 2022-10-20
    • 2017-05-12
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2017-09-04
    • 2021-10-31
    相关资源
    最近更新 更多