Misskey: MiAuthのチェックは /api/miauth/{session}/check ではなく /miauth/{session}/check にしたい

Created on 29 May 2020  ·  11Comments  ·  Source: syuilo/misskey

💡 Summary

MiAuthのチェックURLにPOSTすると404になる

🙂 Expected Behavior

セッションIDが有効かつ認証許可した場合、HTTP 200でjson形式のレスポンスが返ってくる

☹️ Actual Behavior

認証許可してもHTTP 404が出る

📝 Steps to Reproduce

  1. miauthのセッションIDを作り、ユーザー認証を行う(iconやcallbackは未指定。)
  2. /miauth/{セッションID}/check にPOSTする

📌 Environment

Misskey v12.38.1

✨Feature 🐛Bug 🧩API

Most helpful comment

POSTを301するとGETで飛んじゃいます

All 11 comments

/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 を意図しているのでそのように修正します

Note: 経過説明

  1. 83ec906ee7c5d9bd42b11129f3f0b3df85287b3c をコミットした
  2. 83ec906ee7c5d9bd42b11129f3f0b3df85287b3c だとリモートからの投稿を受信できないことに12.39.0リリース直前に気づく #6444

    • 結局バグを孕んだまま12.39.0がリリースされてしまった

  3. 83ec906ee7c5d9bd42b11129f3f0b3df85287b3c をRevertし、とりあえず/api/...なURLを正規のものとした(12.39.1)
Was this page helpful?
0 / 5 - 0 ratings

Related issues

ne-moni picture ne-moni  ·  3Comments

tamaina picture tamaina  ·  3Comments

tamaina picture tamaina  ·  3Comments

2vg picture 2vg  ·  3Comments

tamaina picture tamaina  ·  3Comments