问题描述
我在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
来做到这一点。