From 608b8bb74142c52e78f53afc1bbc340b85dfa2d4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 27 Mar 2020 20:24:32 +0900 Subject: [PATCH] wip --- src/client/pages/doc.vue | 3 ++ src/docs/api.ja-JP.md | 59 ++++++++++++++++++++++++++- src/server/api/openapi/description.ts | 47 +-------------------- 3 files changed, 62 insertions(+), 47 deletions(-) diff --git a/src/client/pages/doc.vue b/src/client/pages/doc.vue index e0db5a3746..5cdb5999ba 100644 --- a/src/client/pages/doc.vue +++ b/src/client/pages/doc.vue @@ -72,6 +72,9 @@ export default Vue.extend({ }, parse(md: string) { + // 変数置換 + md = md.replace(/\{_URL_\}/g, url); + // markdown の全容をパースする const parsed = markdown.parse(md, {}); if (parsed.length === 0) return; diff --git a/src/docs/api.ja-JP.md b/src/docs/api.ja-JP.md index 6e1eba0656..5d370a29cd 100644 --- a/src/docs/api.ja-JP.md +++ b/src/docs/api.ja-JP.md @@ -1,3 +1,60 @@ # Misskey API -[APIリファレンス](/api-doc) +MisskeyAPIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発できます。 +ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。 + +APIを使い始めるには、まずAPIキーを取得する必要があります。 +このドキュメントでは、APIキーを取得する手順を説明した後、基本的なAPIの使い方を説明します。 + +## APIキーの取得 +基本的に、APIはリクエストにはAPIキーが必要となります。 +あなたの作ろうとしているアプリケーションが、あなた専用のものなのか、それとも不特定多数の人に使ってもらうものなのかによって、APIキーの取得手順は異なります。 + +* あなた専用の場合: [「自分のアカウントのAPIキーを取得する」](#自分のアカウントのAPIキーを取得する)に進む +* 皆に使ってもらう場合: [「アプリケーションとしてAPIキーを取得する」](#アプリケーションとしてAPIキーを取得する)に進む + +### 自分のアカウントのAPIキーを取得する +「設定 > API」で、自分のAPIキーを取得できます。 + +> この方法で入手したAPIキーは強力なので、第三者に教えないでください(アプリなどにも入力しないでください)。 + +[「APIの使い方」へ進む](#APIの使い方) + +### アプリケーションとしてAPIキーを取得する +アプリケーションを使ってもらうには、ユーザーのAPIキーを以下の手順で取得する必要があります。 + +#### Step 1 + +UUIDを生成する。以後これをセッションIDと呼びます。 + +#### Step 2 + +`{_URL_}/miauth/{session}`をユーザーのブラウザで表示させる。`{session}`の部分は、セッションIDに置き換えてください。 +> 例: `{_URL_}/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f` + +表示する際、URLにクエリパラメータとしていくつかのオプションを設定できます: +* `name` ... アプリケーション名 + * > 例: `MissDeck` +* `callback` ... 認証が終わった後にリダイレクトするURL + * > 例: `https://missdeck.example.com/callback` + * リダイレクト時には、`session`というクエリパラメータでセッションIDが付きます +* `permissions` ... アプリケーションが要求する権限 + * > 例: `write:notes,write:following,read:drive` + * 要求する権限を`,`で区切って列挙します + * どのような権限があるかは[APIリファレンス](/api-doc)で確認できます + +#### Step 3 +ユーザーが連携を許可した後、`{_URL_}/miauth/{session}/check`にPOSTリクエストすると、レスポンスとしてAPIキーを含むJSONが返ります。 + +レスポンスに含まれるプロパティ: +* `token` ... ユーザーのAPIキー +* `user` ... ユーザーの情報 + +[「APIの使い方」へ進む](#APIの使い方) + +## APIの使い方 +**APIはすべてPOSTで、リクエスト/レスポンスともにJSON形式です。RESTではありません。** +APIキーは、`i`というパラメータ名でリクエストに含めます。 + +* [APIリファレンス](/api-doc) +* [ストリーミングAPI](./stream) diff --git a/src/server/api/openapi/description.ts b/src/server/api/openapi/description.ts index a4b79d9502..4fff53ac90 100644 --- a/src/server/api/openapi/description.ts +++ b/src/server/api/openapi/description.ts @@ -42,52 +42,7 @@ export function getDescription(lang = 'ja-JP'): string { .join('\n'); const descriptions = { - 'ja-JP': `**Misskey is a decentralized microblogging platform.** - -# Usage -**APIはすべてPOSTでリクエスト/レスポンスともにJSON形式です。** -一部のAPIはリクエストに認証情報(APIキー)が必要です。リクエストの際に\`i\`というパラメータでAPIキーを添付してください。 - -## 自分のアカウントのAPIキーを取得する -「設定 > API」で、自分のAPIキーを取得できます。 - -> アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。 - -## アプリケーションとしてAPIキーを取得する -直接ユーザーのAPIキーをアプリケーションが扱うのはセキュリティ上のリスクがあるので、 -アプリケーションからAPIを利用する際には、アプリケーションとアプリケーションを利用するユーザーが結び付けられた専用のAPIキーを発行します。 - -### 1.アプリケーションを登録する -まず、あなたのアプリケーションやWebサービス(以後、あなたのアプリと呼びます)をMisskeyに登録します。 -[デベロッパーセンター](/dev)にアクセスし、「アプリ > アプリ作成」からアプリを作成してください。 - -登録が済むとあなたのアプリのシークレットキーが入手できます。このシークレットキーは後で使用します。 - -> アプリに成りすまされる可能性があるため、極力このシークレットキーは公開しないようにしてください。

- -### 2.ユーザーに認証させる -アプリを使ってもらうには、ユーザーにアカウントへのアクセスの許可をもらう必要があります。 - -認証セッションを開始するには、[${config.apiUrl}/auth/session/generate](#operation/auth/session/generate) へパラメータに\`appSecret\`としてシークレットキーを含めたリクエストを送信します。 -レスポンスとして認証セッションのトークンや認証フォームのURLが取得できるので、認証フォームのURLをブラウザで表示し、ユーザーにフォームを提示してください。 - -あなたのアプリがコールバックURLを設定している場合、 -ユーザーがあなたのアプリの連携を許可すると設定しているコールバックURLに\`token\`という名前でセッションのトークンが含まれたクエリを付けてリダイレクトします。 - -あなたのアプリがコールバックURLを設定していない場合、ユーザーがあなたのアプリの連携を許可したことを(何らかの方法で(たとえばボタンを押させるなど))確認出来るようにしてください。 - -### 3.アクセストークンを取得する -ユーザーが連携を許可したら、[${config.apiUrl}/auth/session/userkey](#operation/auth/session/userkey) へリクエストを送信します。 - -上手くいけば、認証したユーザーのアクセストークンがレスポンスとして取得できます。おめでとうございます! - -アクセストークンが取得できたら、*「ユーザーのアクセストークン+あなたのアプリのシークレットキーをsha256したもの」*をAPIキーとして、APIにリクエストできます。 - -APIキーの生成方法を擬似コードで表すと次のようになります: -\`\`\` js -const i = sha256(userToken + secretKey); -\`\`\` - + 'ja-JP': ` # Permissions |Permisson (kind)|Description|Endpoints| |:--|:--|:--|