Mastodon
  • Mastodonの使い方
    • Signing up for an account
    • Setting up your profile
    • Posting toots
    • Using the network features
    • Dealing with unwanted content
    • Promoting yourself and others
    • Set your preferences
    • その他の設定
    • Using Mastodon externally
    • Moving or leaving accounts
  • Mastodonの構築
    • マシンの準備
    • ソースからインストール
    • 環境設定
    • オプションのインストール
      • 全文検索
      • 秘匿サービス
      • シングルサインオン
    • セットアップを完了する
    • 開発者向けコマンドラインを利用する
    • 新しいバージョンへアップグレード
    • サーバのバックアップ
    • 新しいマシンへの移行
    • サーバーのスケールアップ
    • モデレーション
    • トラブルシューティング
  • アプリケーションの開発
    • Getting started with the API
    • Playing with public data
    • Obtaining client app access
    • ログイン
    • ガイドラインとベストプラクティス
    • ライブラリ等
  • コントリビューション
    • 技術的情報
    • 開発環境のセットアップ
    • ソースコードの構造
    • ルーティング
  • スペック
    • ActivityPub
    • WebFinger
    • Security
    • Microformats
    • OAuth
  • REST API
    • OAuthスコープ
  • API一覧
    • apps
      • oauth
    • accounts
      • bookmarks
      • favourites
      • mutes
      • blocks
      • domain_blocks
      • filters
      • reports
      • follow_requests
      • endorsements
      • featured_tags
      • preferences
      • suggestions
    • statuses
      • media
      • polls
      • scheduled_statuses
      • streaming
    • timelines
      • conversations
      • lists
      • markers
    • notifications
      • push
    • search
    • instance
      • trends
      • directory
      • custom_emojis
    • admin
    • proofs
    • oembed
  • APIエンティティ
    • Account
    • Activity
    • Admin::Account
    • Admin::Report
    • Application
    • Attachment
    • Card
    • Context
    • Conversation
    • Emoji
    • Error
    • FeaturedTag
    • Field
    • Filter
    • History
    • IdentityProof
    • Instance
    • List
    • Marker
    • Mention
    • Notification
    • Poll
    • Preferences
    • PushSubscription
    • Relationship
    • Report
    • Results
    • ScheduledStatus
    • Source
    • Status
    • Tag
    • Token

ログイン

ユーザーから承認を取得し、ユーザーに代わってアクションを実行する方法。

スコープの説明

アプリケーションを登録し、ユーザーを認証するとき、生成されたトークンに何を許可するかを正確に定義する必要があります。OAuthスコープを使用してこれを実行します。各々のAPIメソッドは関連付けられたスコープが存在し、承認に使用されているトークンが、対応するスコープで生成されている場合にのみ呼び出すことができます。

スコープは登録時に指定したものだけを使用しなければなりません。アプリケーションを作成するとき、read write follow pushと指定すると、ただ単にすべての使用可能なスコープを要求したということになります。しかし、もっと詳細なスコープを使用して、あなたのアプリが本当に要求している機能だけ要求したほうが良いです。OAuthスコープで全てのスコープの一覧を見ることができます。各々のAPIメソッドのドキュメントでもそのAPIにアクセスするために必要なスコープを記載しています。

認証コードによる認証の一例

これは以前の認証フローに似ていますが、今回はユーザーからも承認を取得する必要があります。

Client IDとシークレット

まず、まだクライアントアプリケーションを作成していない場合は、アプリケーションの作成を見るか、直接POST /api/v1/appsでこのメソッドのドキュメントを見てください。client_idとclient_secretを使用します。

ユーザーの認証

ユーザーを認証するために、GET /oauth/authorizeにブラウザでリクエストしてください。その際以下のパラメータが必要です。

https://mastodon.example/oauth/authorize
?client_id=CLIENT_ID
&scope=read+write+follow+push
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
&response_type=code

注意:

  • client_idとclient_secretはアプリケーションを登録するときに取得しています。
  • scopeはスコープは登録時に指定したものだけを使用してください。必要なものだけを使用してください。OAuthスコープで詳細な情報を見ることができます。
  • redirect_uriはアプリケーション登録時に指定したURIのうちの一つです。この例ではまだ「アウトオブバンド」を使用しています。つまり、取得したコードを手動で入力しないといけないということです。しかし、URIを指定した場合、そのコードはcodeパラメータとして付与され、リクエストハンドラでログに格納されます。詳細は、APIメソッドのドキュメントのレスポンスセクションを見てください。

トークンの取得

今、認証codeを持っています。リクエストのユーザーを認証するためアクセストークンを取得しましょう。以前と同様POST /oauth/tokenします。違うのは取得した認証codeを渡すというところだけです。

curl -X POST \
	-F 'client_id=your_client_id_here' \
	-F 'client_secret=your_client_secret_here' \
	-F 'redirect_uri=urn:ietf:wg:oauth:2.0:oob' \
	-F 'grant_type=authorization_code' \
	-F 'code=user_authzcode_here' \
	-F 'scope=read write follow push' \
	https://mastodon.example/oauth/token

注意:

  • client_idとclient_secretはアプリケーションを登録したときのレスポンスに含まれています。
  • redirect_uriはアプリケーション登録時に指定したURIのうちの一つです。
  • grant_typeはauthorization_codeを指定しますが、それでもデフォルトで readスコープが与えられます。ただし、ユーザーを認証する際に、特定のscopeを要求しましたはずです。今回もscopeに正確に同じ値をここに渡します。
  • The code can only be used once. If you need to obtain a new token, you will need to have the user authorize again by repeating the above Authorize the user step.
  • codeは一回限り有効です。もし新しいトークンを必要とする場合、ユーザーの認証に戻ってやり直す必要があります。

このメソッドのレスポンスはTokenエンティティです。access_tokenを要求します。一度アクセストークンを取得したら、ローカルにキャッシュしてください。アクセストークンをリクエストに含めるには、Authorization: Bearer アクセストークンを入力 HTTPヘッダーを付与してください。これは、例えば公開されていない情報を取得するときなど、OAuthを要求するいかなるAPIにアクセスする時にも必要です。[GET /api/v1/accounts/verify_credentials]で取得した認証情報が有効かどうかを確認できます。

curl \
	-H 'Authorization: Bearer アクセストークンを入力' \
	https://mastodon.example/api/v1/accounts/verify_credentials

トークンを正しく取得し、これを含めて上記ののようにアクセスした場合、そのユーザーのAccountエンティティにsourceが付与されたものが返ります。

認証されたユーザーとしてアクションを実行する

認証されたユーザーのトークンを付与すると、トークンのスコープ内にあるユーザーとして任意のアクションを実行できるようになります。

投稿とその削除

  • POST /api/v1/statusesで投稿を作成できます。
    • /api/v1/mediaでメディアを添付できます。
    • /api/v1/scheduled_statusesで時間指定投稿が使用できます。

タイムライン

  • /api/v1/timelinesでタイムラインにアクセスできます。
  • /api/v1/markersでタイムライン上の特定の位置を記録し、呼び出すことができます。
  • /api/v1/statusesでそのトゥートに対してアクションを実行できます。
    • /api/v1/pollsでアンケートを見たり、投票することができます。
  • /api/v1/listsでGET /api/v1/timelines/list/:list_idを使用するために必要なIDを取得できます。
  • /api/v1/conversationsで公開範囲が「ダイレクト」の会話を取得できます。
  • /api/v1/favouritesでお気に入り登録したトゥートの一覧を取得できます。
  • /api/v1/bookmarksでブックマークに登録したトゥートの一覧を取得できます。

他のユーザーとの関わり

  • /api/v1/accountsで他のユーザーに対してアクションを実行できます。
  • /api/v1/follow_requestsでフォローリクエストを操作できます。
  • /api/v1/mutesでミュートしたユーザーの一覧を取得できます。
  • [/api/v1/blocks](/methods/accounts/blocks/でブロックしたユーザーの一覧を取得できます。

通知を取得する

  • /api/v1/notificationsで通知を操作できます。
  • /api/v1/pushでプッシュ通知を購読できます。

検索・発見機能

  • /api/v2/searchで検索できます。
  • /api/v1/suggestionsでフォロー推奨ユーザーの一覧を取得できます。

セーフティ機能

  • /api/v1/filtersでタイムラインを特定ワードを使用しフィルタできます。
  • /api/v1/domain_blocksでブロックするドメインを設定できます。
  • /api/v1/reportsで通報を作成できます。
  • /api/v1/adminでユーザーをモデレーションできます。

アカウントの情報を編集

  • /api/v1/endorsementsでプロフィールに紹介するアカウントを設定できます。
  • /api/v1/featured_tagsでプロフィールに紹介するハッシュタグを設定できます。
  • /api/v1/preferencesでユーザーの設定を取得できます。

最終更新 July 1, 2020 · このページを改善する
他の言語: English

Merch

Tシャツとステッカー(英語)

Mastodonに参加しよう · ブログ · ·

ソースコード · CC BY-SA 4.0 · インプリント