Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AiScript拡張] API Tokenを要求できる関数を追加 #10911

Open
kakkokari-gtyih opened this issue May 28, 2023 · 8 comments
Open

[AiScript拡張] API Tokenを要求できる関数を追加 #10911

kakkokari-gtyih opened this issue May 28, 2023 · 8 comments
Labels
✨Feature This adds/improves/enhances a feature packages/frontend Client side specific issue/PR

Comments

@kakkokari-gtyih
Copy link
Contributor

kakkokari-gtyih commented May 28, 2023

Summary

AiScriptを使用するプログラムで一部のAPI通信を行う際に、

  1. APIコンソールに行く
  2. スコープを指定する
  3. トークンを発行する
  4. プラグイン or Play の画面に戻ってトークンを入力する

という手順を踏む必要があり、非常に煩雑なためほしい

@kakkokari-gtyih kakkokari-gtyih added the ✨Feature This adds/improves/enhances a feature label May 28, 2023
@kakkokari-gtyih kakkokari-gtyih changed the title [AiScript拡張] APITokenを要求できる関数を追加 [AiScript拡張] API Tokenを要求できる関数を追加 May 28, 2023
@kakkokari-gtyih
Copy link
Contributor Author

kakkokari-gtyih commented May 28, 2023

@Mk:requestToken(scope: arr): str | null

実行するとModalが立ち上がって確認画面が出る

「許可」を押すとTokenが、それ以外を押すとnullが返却される

image

使用例

var token = Mk:load("some_app_token")

if (!token) {
  token = Mk:requestToken([
    // スコープ名はMiAuthと統一?
    // https://misskey-hub.net/docs/api/permission.html
    "read:account"
    "read:pages"
    "write:pages"
  ])

  if (token) {
    // 認証が通らない or キャンセルされるとnullを返す
    Mk:save("some_app_token" token)
  } else {
    Mk:dialog("認証に失敗しました")
  }
}

if (token) {
  // do something
}

@syuilo
Copy link
Member

syuilo commented May 29, 2023

lgtm

@syuilo syuilo added the packages/frontend Client side specific issue/PR label May 29, 2023
@acid-chicken
Copy link
Member

(get というより request ではという気はする)

@acid-chicken
Copy link
Member

あと可能なら AiScript 上で生トークンが動くのは避けたい(何かしらのインターフェースに隠蔽したい)気持ちがある

@kakkokari-gtyih
Copy link
Contributor Author

kakkokari-gtyih commented May 29, 2023

あと可能なら AiScript 上で生トークンが動くのは避けたい(何かしらのインターフェースに隠蔽したい)気持ちがある

プラグインからアクセスできないように別途MiLocalStorageの領域を確保するとかですかね(TokenはMk:apiの実装側で直接読み出す)

@EbiseLutica
Copy link
Contributor

ハンドル的な感じになるのかな

@kakkokari-gtyih
Copy link
Contributor Author

あと可能なら AiScript 上で生トークンが動くのは避けたい(何かしらのインターフェースに隠蔽したい)気持ちがある

プラグインからアクセスできないように別途MiLocalStorageの領域を確保するとかですかね(TokenはMk:apiの実装側で直接読み出す)

あえてTokenを使用しないでAPIリクエストするような場面って在るんでしょうか?あるなら明示的にTokenを使用しないオプションを実装するのもアリかと

@FineArchs
Copy link
Contributor

生トークンを隠蔽するような実装にするのであれば、クライアント側に権限の照合をさせた上で、クライアントのマスタートークンでAPIリクエストを行うようにしても問題ないのではないかと思います。
端末ごとに別々に承認を要求する必要がなく、多数のトークンを管理する労力も削減でき、結果的に安全性が向上するのではないでしょうか?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨Feature This adds/improves/enhances a feature packages/frontend Client side specific issue/PR
Projects
Development

No branches or pull requests

5 participants