我在此示例中使用 simple-oauth2 来查询 Microsoft Graph。到目前为止一切运作良好。但是当我尝试刷新访问令牌
var newToken = await storedToken.refresh();
时,我收到错误:
内容类型与 JSON 不兼容
这是在
wreck
的 index.js
中抛出的,标题中似乎没有设置 content-type
,而 mode
设置为 strict
。问题是,我不知道如何改变这一点或为什么会发生这种情况。它只发生在refresh()
。
我认为这是一个配置问题。示例提供的配置如下
OAUTH_AUTHORITY=https://login.microsoftonline.com/common
OAUTH_ID_METADATA=/v2.0/.well-known/openid-configuration
OAUTH_AUTHORIZE_ENDPOINT=/oauth2/v2.0/authorize
OAUTH_TOKEN_ENDPOINT=/oauth2/v2.0/token
wreck 使用 Url.URL 将
OAUTH_AUTHORITY
与 OAUTH_TOKEN_ENDPOINT
组合起来,得到 https://login.microsoftonline.com/oauth2/v2.0/token
,从而丢失 common
。这会导致 404
,因此不再有 JSON 响应。
我稍微更改了配置,从相对路径中删除了前导斜杠,并向基本 URL 添加了尾随斜杠。
OAUTH_AUTHORITY=https://login.microsoftonline.com/common/
OAUTH_ID_METADATA=/v2.0/.well-known/openid-configuration
OAUTH_AUTHORIZE_ENDPOINT=oauth2/v2.0/authorize
OAUTH_TOKEN_ENDPOINT=oauth2/v2.0/token
因此
OAUTH_TOKEN_ENDPOINT
是相对的。我还没弄清楚为什么它对授权有效,但仍然有效。