Heroku API 客户端返回我的数据而不是用户的

Heroku API Client returning my data instead of user's

我在我的帐户(以下简称帐户 A)上的 heroku 上创建了一个 API 客户端,并使用此处所述的 OAuth 流程将其安装到另一个帐户(以下简称帐户 B):https://devcenter.heroku.com/articles/oauth#web-application-authorization

在账户 B 上启动流程,接受权限,这触发了回调,我在其中交换代码以获取预期格式的最终​​令牌:

{
  "access_token":"811235f4-16d3-476e-b940-ed5dfc7d6513",
  "expires_in":7199,
  "refresh_token":"036b9495-b39d-4626-b53a-34399e7bc737",
  "token_type":"Bearer",
  "user_id":"01234567-89ab-cdef-0123-456789abcdef",
  "session_nonce":"2bf3ec81701ec291"
}

(澄清一下,这是从 heroku 文档中获取的虚拟数据)

到这里一切都很好,但是当我尝试使用令牌**时,我得到了一个非常意外的结果:当我调用 GET /apps 端点时,它从帐户 A 而不是帐户 B 返回了应用程序.

我不明白为什么会这样,我仔细阅读了文档,但找不到任何解释。如果有人经历过这个或者有一些解释,我会很乐意听取。

** 通过“使用令牌”,我的意思是将我的 header 设置为 Authorization: Bearer {access_token},使用 python 的 requests 库。

事实证明它与 heroku 没有直接关系,而是与一个非常狡猾的 linux 文件 .netrc 相关。简而言之,应用程序可以使用此文件以纯文本形式存储令牌。非常奇怪的是 python 模块 requests 默认使用它,如果匹配的话,用那个文件生成的 header 覆盖你给它的

]

要检查您是否遇到同样的问题,只需检查您的主文件夹中是否存在 .netrc 文件,或检查日志以验证发送的 header 是否是您发送的文件预期。