XのOuth2のScopeリスト

tweet.read 閲覧可能なすべてのツイート(保護されたアカウントのツイートも含む)を読み取る
tweet.write ツイートおよびリツイートを投稿する
tweet.moderate.write 自分のツイートに対する返信の表示・非表示を切り替える
users.email 認証されたユーザーのメールアドレスを取得する
users.read 閲覧可能なすべてのアカウント情報(保護されたアカウントも含む)を取得する
follows.read フォローしているユーザーとフォロワーを取得する
follows.write ユーザーをフォロー・フォロー解除する
offline.access アクセスを取り消すまでトークンを有効に保つ(オフラインアクセス)
space.read 閲覧可能なすべてのスペース情報を取得する
mute.read ミュートしているアカウントを取得する
mute.write アカウントをミュート・ミュート解除する
like.read 自分が「いいね」したツイートや閲覧可能な「いいね」情報を取得する
like.write ツイートに「いいね」・「いいね解除」する
list.read 自分が作成または所属しているリスト、リストメンバー、リストフォロワーを取得する(非公開リストも含む)
list.write リストの作成および管理を行う
block.read ブロックしているアカウントを取得する
block.write アカウントをブロック・ブロック解除する
bookmark.read 認証ユーザーがブックマークしたツイートを取得する
bookmark.write ツイートをブックマーク・ブックマーク解除する
media.write メディア(画像・動画など)をアップロードする

pythonで使いやすくしておきました。

from enum import Flag, auto

class XScope(Flag):
    # 各スコープに一意のビット値を割り当て
    TWEET_READ = auto()
    TWEET_WRITE = auto()
    TWEET_MODERATE_WRITE = auto()
    USERS_EMAIL = auto()
    USERS_READ = auto()
    FOLLOWS_READ = auto()
    FOLLOWS_WRITE = auto()
    OFFLINE_ACCESS = auto()
    SPACE_READ = auto()
    MUTE_READ = auto()
    MUTE_WRITE = auto()
    LIKE_READ = auto()
    LIKE_WRITE = auto()
    LIST_READ = auto()
    LIST_WRITE = auto()
    BLOCK_READ = auto()
    BLOCK_WRITE = auto()
    BOOKMARK_READ = auto()
    BOOKMARK_WRITE = auto()
    MEDIA_WRITE = auto()

# 各スコープの文字列を対応させる辞書
_SCOPE_STRINGS = {
    XScope.TWEET_READ: "tweet.read",
    XScope.TWEET_WRITE: "tweet.write",
    XScope.TWEET_MODERATE_WRITE: "tweet.moderate.write",
    XScope.USERS_EMAIL: "users.email",
    XScope.USERS_READ: "users.read",
    XScope.FOLLOWS_READ: "follows.read",
    XScope.FOLLOWS_WRITE: "follows.write",
    XScope.OFFLINE_ACCESS: "offline.access",
    XScope.SPACE_READ: "space.read",
    XScope.MUTE_READ: "mute.read",
    XScope.MUTE_WRITE: "mute.write",
    XScope.LIKE_READ: "like.read",
    XScope.LIKE_WRITE: "like.write",
    XScope.LIST_READ: "list.read",
    XScope.LIST_WRITE: "list.write",
    XScope.BLOCK_READ: "block.read",
    XScope.BLOCK_WRITE: "block.write",
    XScope.BOOKMARK_READ: "bookmark.read",
    XScope.BOOKMARK_WRITE: "bookmark.write",
    XScope.MEDIA_WRITE: "media.write",
}

def create_scope(scope_flags: XScope) -> str:
    """
    XScopeのビットフラグから、%20区切りのスコープ文字列を生成。

    例:
    create_scope(XScope.TWEET_WRITE | XScope.USERS_READ)
     -> "tweet.write%20users.read"

    :param scope_flags: XScopeのビット演算による組み合わせ
    :return: スペース(%20)区切りのスコープ文字列
    """
    return "%20".join(scope_str for flag, scope_str in _SCOPE_STRINGS.items() if flag in scope_flags)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です