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 是否是您发送的文件预期。
我在我的帐户(以下简称帐户 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 是否是您发送的文件预期。