Misskeyの認証方法はOAuthではなく、MiAuthという独自の認証方法を使用してアカウントのトークンを取得します。
このスレッドではMiAuthを使っての認証方法をご紹介いたします。
※MiAuthを使う場合はMisskey 12.39.1以降を使用してください。
1. セッションIDを作る
MiAuthを認証するためのセッションIDを、クライアントアプリ側で生成します。
UUID(v4)を使用することを推奨しています。
例: 0cf57dd5-c5ba-4632-a936-d75b9a30bde7
参考:PythonでのUUIDv4の生成
import uuid
session_id = uuid.uuid4()
print(session_id)
2. MiAuth用URLを作成する
ターゲットのMisskeyインスタンス、セッションID、以下のクエリを付けてユーザにそのURLをブラウザで開いてもらいます。
URLクエリ
MiAuthはURLクエリを付けて、名前やコールバック先、権限の設定を行います。
※URLエンコード処理しておくと安心です
name (必須)
クライアントアプリの名前を設定します。
設定例: Misskey Support App
icon
アプリケーションのアイコンの直リンク画像をURLで指定します。
設定例: https://misskey-app.example.com/application-icon.png
callback
アプリケーション認証後のリダイレクト先をURLで指定します。
指定した場合はそのURLへsessionというクエリにセッションIDが付いた形式でリダイレクトされます。
指定していない場合はリダイレクトせず、ユーザが手動で認証を完了したという操作が必要になります。
設定例: https://misskey-app.example.com/callback
参考: コールバック例
セッションIDが2c034920-d1f7-4760-9d40-6c12d526d785
で、callbackがhttps://misskey-app.example.com/callback
として設定されている場合、
https://misskey-app.example.com/callback?session=2c034920-d1f7-4760-9d40-6c12d526d785
となる。
permission
クライアントアプリで使用したい権限を指定します。
複数の権限を用いる場合は,
で区切ります。
使用できる権限の一覧は、各ターゲットのMisskeyインスタンスを確認してください。(参考: misskey.ioのAPIドキュメント)
設定例: アカウント情報を取得でき、ノートの投稿ができる→read:account,write:notes
URL例
https://misskey-instance.example.com/miauth/16b4b600-57fb-4810-aeec-598ac74f2bee?name=MiAuth-Sandbox&permission=read:account,write:notes
3. MiAuth認証後のクライアントアプリ処理
callbackを指定した場合はそのままコールバック先にリダイレクトされます。
その中からsessionクエリを読み出します。
callbackを指定していない場合は、ユーザがその認証が完了したという操作ができるようにします。
以下のURLにHTTP POSTをします。
/api/miauth/{セッションID}/check
例: https://misskey-instance.example.com/api/miauth/16b4b600-57fb-4810-aeec-598ac74f2bee/check
認証が完了しても完了していなくても、必ずJSON形式のHTTP 200(OK)が返ります。
認証が完了したら、セッションIDは破棄してください。
仕様
ok (必ず代入されます)
真偽値です。認証が成功していればtrue
、していなければfalse
が返ります。
token
テキスト形式です。認証が成功していればこのプロパティが含まれます。
Misskey APIを使用するときに使います(認証が必要なMisskey APIにi
に代入します)ので、このトークンを控えておいてください。
user
オブジェクト形式で、認証したユーザの詳細情報が返ります。認証が成功していればこのプロパティが含まれます。
最後に
MiAuthでの認証にお困りでしたらこのスレッドに返信をしてください。お力添えになれるかもしれません。