MiAuthのチェックURLにPOSTすると404になる
セッションIDが有効かつ認証許可した場合、HTTP 200でjson形式のレスポンスが返ってくる
認証許可してもHTTP 404が出る
Misskey v12.38.1
/api/miauth/{セッションID}/check にPOSTしたら正常に返ってきました。
Misskey APIのドキュメントに問題があるようです。
ユーザーが連携を許可した後、
https://misskey.io/miauth/{session}/checkにPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。
もし改善できるのであれば、ドキュメントに揃えていただきたいです。
404が返ってきておかしいなとは思っていたけど、そういう仕様かと思ってた
404が返ってきておかしいなとは思っていたけど、そういう仕様かと思ってた
/miauth/{session}はウェブクライアント側のルーターで処理しているようですが、
/miauth/{session}/checkはサーバー側のルーターで処理しているようなので多分サーバー側のルーターのプレフィックスが影響しているのかもしれません。
/apiのほうを正規のurlにして/miauth/.../checkに来たら301って感じの対応でどうでしょう?
POSTを301するとGETで飛んじゃいます
/apiのほうを正規のurlにして/miauth/.../checkに来たら301って感じの対応でどうでしょう?
とにかく、miauthのURLは統一すべきです。
api統一でいいか
ドキュメントを書き換えるだけにする
router.post('/miauth/:session/check', async ctx => {
const token = await AccessTokens.findOne({
session: ctx.params.session
});
if (token && !token.fetched) {
AccessTokens.update(token.id, {
fetched: true
});
ctx.body = {
ok: true,
token: token.token,
user: await Users.pack(token.userId, null, { detail: true })
};
} else {
ctx.body = {
ok: false,
};
}
});
上記のスクリプトは今 src/server/api/index.ts上に書いてあるみたいですが、これをsrc/server/index.tsに移動すればいいのではないでしょうか。
/api/miauth/{session}/check ではなく /miauth/{session}/check を意図しているのでそのように修正します
Most helpful comment
POSTを301するとGETで飛んじゃいます