Spotify API 授权授予流程状态 415

Posted

技术标签:

【中文标题】Spotify API 授权授予流程状态 415【英文标题】:Spotify API Authorization Grant Flow status 415 【发布时间】:2019-09-12 00:52:54 【问题描述】:

我正在尝试构建一个与 spotify API 集成的网络应用程序。为此,我正在使用授权授权流程。

我设法获得了授权码,但在后端,当我测试应该与访问令牌交换授权码的端点时,我不断收到 415 响应状态。

这是端点正在使用的服务:

export async function getAccessAndRefresh(code: string): Promise<any> 
return axios.post(ACCESS_URL, 
    data: 
        "grant_type": "authorization_code",
        "code": code,
        "redirect_uri": REDIRECT_URI
    ,
    headers: 
        "Authorization": " Basic " + Buffer.from(CLIENT_ID + ":" + CLIENT_SECRET).toString("base64"),
        "Content-Type": "application/x-www-form-urlencoded",
    ,
    method: "POST",
    json:true
)

另外,我写这个单元测试是为了测试服务(我在运行这个单元测试时得到了 415):

describe("Request tests", () => 

let server: Server;

function initServer() 


    server = createServer(App);

    server.listen(5000);


function destroyServer() 
    server.close();


test("Test refresh and access token returned by spotify api", () => 

    return getAccessAndRefresh(AUTH_CODE).then((value)=>
        expect(value).toHaveProperty("access_token");
    )

)

beforeAll(() => 
    initServer();
);

afterAll(()=>
    destroyServer();
)

)

在测试中,AUTH_CODE 是我在浏览器中通过使用我的 API 密钥访问 https://accounts.spotify.com/authorize 端点手动获得的代码。

谁能帮我解决这个问题?谢谢!

【问题讨论】:

这很奇怪,这里的一切看起来都很好,您是否尝试过在 Postman 中运行此调用以确保它在那里工作,我已经将您的调用与我在 Postman 中的调用进行了比较,看起来很相似,我可以'最初没有发现任何错误 我试过用相同的参数运行 curl,curl 工作得很好。不过我还没试过邮递员 @RoguePlanetoid 我已经尝试过使用 Postman。如果我将正文编码为表单数据,我会得到相同的 415 状态。我还尝试更改为 x-www-form-urlencoded 并使用此正文获得 400 状态: "error": "invalid_grant", "error_description": "Invalid redirect URI" 我想我知道问题所在,您需要登录获得客户端 ID 和密码的仪表板,然后转到设置并将重定​​向 URI 设置为您正在使用的地址,例如example.com/postback 应该可以解决问题,无论您正在做什么来获得 400 错误,这就是您需要做的,这就是那种情况下的“正确”错误 【参考方案1】:

在Spotify Dashboard 中,您可能需要将重定向 URI 设置为您在代码中使用的 URL,如果出现以下错误,则需要匹配:

"error": "invalid_grant", "error_description": "无效的重定向 URI"

这就是您需要做的所有事情,只需转到获取客户端 ID 和客户端密码的仪表板,然后转到编辑设置,您就会看到设置重定向 URI 的选项

【讨论】:

不是这样的。网址设置正确,但我会仔细检查以防错字或其他原因 是的,我发现了问题。我以 URL 编码形式发送 redirect_uri,因此出现错误。感谢您的帮助! 太好了,很高兴我能帮上忙,我认为这与 URI 有关!

以上是关于Spotify API 授权授予流程状态 415的主要内容,如果未能解决你的问题,请参考以下文章

spotify web api授权码授予thelinmichael / spotify-web-api-java android

使用 fetch 时 POST https://accounts.spotify.com/api/token 415 错误

spotify web api 授权码授权 thelinmichael/spotify-web-api-java android

Spotify API 发布调用 – 响应 415?

使用 Java Spring Rest Api 执行授权码授予流程

Spotify API - 在授权过程中检索访问令牌时出错