MiAuthでトークンを取得する

Misskeyは認証方法の一つとしてMiAuthがあります。

この認証方法はMisskey 12.39.1以降のインスタンスでサポートされます。

MiAuthでの認証を容易にするため、Misskey.pyにはMiAuthクラスがあります。

class misskey.MiAuth(address: str = 'https://misskey.io', session_id: Optional[Union[uuid.UUID, str]] = None, name: str = 'Misskey.py', icon: Optional[str] = None, callback: Optional[str] = None, permission: Optional[Union[List[Optional[Union[misskey.enum.Permissions, str]]], Tuple[Optional[misskey.enum.Permissions]], Set[Optional[misskey.enum.Permissions]]]] = None, session: Optional[requests.sessions.Session] = None)[ソース]

Misskey Authentication Class

Args:

address (str): Instance address. You can also include the URL protocol. If not specified, it will be automatically recognized as https.

session_id (uuid.UUID or str, optional): Session ID for performing MiAuth. If not specified, it will be set automatically.

name (str, optional): App name.

icon (str, optional): The URL of the icon.

callback (str, optional): App callback URL.

permission (list of str, optional): The permissions that the app can use. You can specify an enumeration of Permissions.

session (requests.Session, optional): If you have prepared the requests.Session class yourself, you can assign it here. Normally you do not need to specify it.

認証URLを作成する

まず、MiAuthクラスをインスタンス化します。

少なくとも、インスタンスアドレス( address )と名前 ( name ) を入力します。

また、必要に応じて権限( permission )やコールバックURL( callback )を追加で指定します。

from misskey import MiAuth

# MiAuthインスタンスを作成
mia = MiAuth("mk.example.com", name="Misskey.py App")

# permissionを指定する場合
mia_p = MiAuth(
    "mk.example.com",
    name="Misskey.py App",
    permission=[
        "read:account",
        "write:notes",
    ]
)

インスタンス化したら、メソッド generate_url でURLを作成します。

作成したURLをエンドユーザー(認証してもらうユーザー)のブラウザで開きます。

from misskey import MiAuth
import webbrowser

mia = MiAuth("mk.example.com", name="Misskey.py App")

url = mia.generate_url()

webbrowser.open(url) # 例としてブラウザを開きます

トークンを取得する

エンドユーザーの認証が完了したら、メソッド check でトークンの取得を行います。

from misskey import MiAuth
import webbrowser

mia = MiAuth("mk.example.com", name="Misskey.py App")

token = mia.check() # 認証が行えたかをチェックします

正しく認証された場合は、トークンが返されます。問題があった場合は例外 MisskeyMiAuthFailedException が送出されます。

exception misskey.exceptions.MisskeyMiAuthFailedException[ソース]

また、認証されたトークンはプロパティ token にも保存されます。

取得したトークンは、そのままMisskeyクラスなどで使用します。

from misskey import MiAuth, Misskey

mia = MiAuth("mk.example.com", name="Misskey.py App")
token = mia.check()

mk = Misskey("mk.example.com", i=token)

セッションIDを他で保存する場合

スクリプト上、MiAuthインスタンスを保持できない場合は、 プロパティ session_id を使用してセッションIDを保存することもできます。

from misskey import MiAuth

mia = MiAuth("mk.example.com", name="Misskey.py App")

session_id = str(mia.session_id) # セッションIDを取得

MiAuthインスタンス化時に引数 session_id を代入することで同じセッションIDで再開できます。

from misskey import MiAuth

session_id = "00000000-0000-0000-0000-000000000000"

mia_n = MiAuth("mk.example.com", session_id=session_id)