哨兵-无法请求令牌OAuth HTTP错误405

问题描述

我在Settings > Account > API > Applications下创建了一个Sentry应用程序。 我的Web服务器正在运行,它接收带有code参数的回调请求。 但是,每当像下面这样发送令牌请求时,都会收到HTTP 405错误

    fetch("https://sentry.io/oauth/token",{
      method: "post",headers: { "Content-Type": "application/json" },body: JSON.stringify({
        client_id: sentry_client_id,client_secret: sentry_secret,grant_type: "authorization_code",redirect_uri: "http://localhost:8000/app/dashboard.html",code: code,}),})

预先感谢

解决方法

对令牌终结点的请求必须是URL编码的形式,而不是JSON编码。改为这样:

var formData = new FormData();

formData.append("client_id",clientId);
formData.append("client_secret",clientSecret);
formData.append("code_verifier",codeVerifier);
formData.append("grant_type","authorization_code");
formData.append("redirect_uri",redirectUri);
formData.append("code",code);

var searchParams = new URLSearchParams(formData);

fetch(tokenEndpoint,{
  method: "post",body: searchParams,});

令牌端点可能支持也可能不支持CORS。我没有在哨兵的情况下对此进行测试。

此外,如果Sentry支持,我会使用PKCE。上面我的示例通过添加code_verifier来做到这一点。