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
orstr
, 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
ofstr
, optional): The permissions that the app can use. You can specify an enumeration of Permissions.session (
requests.Session
, optional): If you have prepared therequests.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)