Note
このドキュメントは2026-02-27 02:34にPLaMo Translation Modelを使用して自動翻訳されました。
Warning
このドキュメントは原文と大きく乖離しているか、内容が原文から欠落している可能性があるため、原文を読むことを推奨します。
FEP-3b86: アクティビティインテント
7.1 リモートサーバーの実装例
以下に、リモートサーバーにおけるワークフローの具体的な実装例を示します:
- ユーザーがリモートサーバー(ActivityPubアカウントを持たないインターネット上の任意のアドレス)にアクセスします。
- リモートサーバーは「いいね」や「共有」などのボタンを表示し、特定の文書やオブジェクトに対する操作を促します。
- ユーザーがこれらのリンクをクリックすると、リモートサーバーはまずそのユーザーが既に認識されているかどうかを確認します。これは必ずしもログイン状態を意味するものではなく、単にユーザーが過去にホームサーバーで認証を行ったことがあるか否かを確認するものです。Activity Intentsの機能を利用するために真の認証は必須ではありません。
- もしユーザーが未登録の場合、リモートサーバーはFediverse ID(例:@benpate@mastodon.social)の入力を求めます。リモートサーバーはこの情報を将来の利用のために保存できます(可能であれば
localStorageなどのプライベートデータストアに格納することが望ましい)。 - ユーザーが既に認識されている場合、ステップ3.1が完了していると判断され、次のステップ4に進むことができます。
- もしユーザーが未登録の場合、リモートサーバーはFediverse ID(例:@benpate@mastodon.social)の入力を求めます。リモートサーバーはこの情報を将来の利用のために保存できます(可能であれば
- リモートサーバーは標準的なWebFingerクエリを使用してユーザーのFediverse IDを検索し、ユーザーが所属するホームサーバーが提供するActivity Intentsを確認します。
- Activity Intentsが見つからない場合、リモートサーバーは既知のサーバータイプに対して代替値を補完することを検討できます。
- それでも見つからない場合(かつ代替値が適用できない場合)、リモートサーバーはそのアカウントが選択した機能と互換性がないことをユーザーに通知し、ワークフローを停止する必要があります。
- リモートサーバーは指定されたURIテンプレートに値を埋め込んだ後、ユーザーをホームサーバー上の対応するページにリダイレクトします。これによりホームサーバー上でActivity Intentsのワークフローが開始されます。
- ユーザーがワークフローを完了すると、ホームサーバーは
on-successパラメータに含まれるURLを使用して、ユーザーを正しいページに戻す必要があります。- 同様に、ユーザーがワークフローを中止した場合も、ホームサーバーは
on-cancelパラメータに含まれるURLを使用して、ユーザーをリモートサーバー上の適切なページにリダイレクトする必要があります。
- 同様に、ユーザーがワークフローを中止した場合も、ホームサーバーは
7.2 未公開リンクに対するフォールバック処理
リモートサーバーは、Activity Intentsを公開していないアプリケーションに対しても対応することができます。この場合、リモートサーバーは以下の順序で処理を行います:
1. Activity Intentsへのリンクが存在する場合はそれらを優先的に使用します。
2. 存在しない場合は、oStatusの/authorize_interactionエンドポイントなどの古い形式のリンクにフォールバックします。
3. それでも値が存在しない場合には、ハードコードされた値(例:Mastodonの/shareエンドポイント)を最終手段として使用します。
8.0 実装事例
8.1 ホームサーバー一覧
以下に、Activity Intentsエンドポイントを公開している「ホームサーバー」のリストを示します:
- Emissaryは「作成」「フォロー」「いいね」の各Intentsをサポートしています。
- Forteは「作成」Intentsをサポートしています。
- Loopsは「フォロー」Intentsをサポートしています。
- PieFedは「作成」Intentsをサポートしています。
- 「streams」リポジトリは「作成」Intentsをサポートしています。
- WordPressは「作成」と「フォロー」の両Intentsをサポートしています
- このリストにあなたのサービスを追加すれば、クッキー🍪をプレゼントします!
8.2 クライアントツール一覧
以下に、エンドユーザーがリモートウェブサイト上でActivity Intentsを利用できるクライアントツールの例を示します:
- Emissaryは「共有」と「いいね」ボタンを提供しています。
- Forte および「streams」リポジトリは、OpenWebAuth(FEP-61cf)を使用してホームサーバー上で直接これらの操作を行う代替手段として、「ウォール・トゥ・ウォール」投稿/返信ボタンも提供しています。その他の機能についても現在開発中です。
- Web Intentsライブラリ(開発途上)
参考文献
- Activity Vocabulary
- Twitter: Web Intents
- Facebook: Share Button
- Remote Follows - oStatusプロトコルのオリジナル解説記事
- Cross Site Request Forgery - Wikipedia
- Cross Site Request Forgery - OWASP
- FEP-888d - FEP専用の名前空間定義
- IETF RFC 7033 - WebFingerプロトコル
- IETF RFC 3896 - 統一資源識別子(URI)の一般構文
- IEFT RFC 2119 - RFC文書における要件レベルを示すキーワード定義
- IETF RFC 6415 - ウェブホストメタデータ仕様
- IEFT RFC-6570 - URIテンプレート構文
- Unvalidated Redirects and Forwards Cheat Sheet - owasp.org)
- OAuth 2.0 Security Best Current Practice
著作権
CC0 1.0 Universal(パブリックドメイン献呈)
本Fediverse Enhancement Proposalの著者らは、法律で認められる範囲内において、本著作物に関するすべての著作権および関連する権利を放棄しています。