We use cookies to improve your experience and analyze site traffic. By clicking "Accept", you consent to our use of cookies. See our Privacy Policy for details.

Attending Frankfurt Book Fair? We’re taking meetings 7–9 October.Book your meeting(opens in a new tab)

認証

JWTトークン、リフレッシュトークン、Google OAuthを使用したZenFlip APIの認証方法を学びます。サーバー間通信用のAPIキーも近日対応予定です。

On this page

認証

ZenFlip APIは2つの認証方法をサポートしています:メール/パスワードログイン(JWTトークン)とGoogle OAuthです。サーバー間通信用のAPIキーは近日対応予定です。すべての保護されたエンドポイントでは、Authorizationヘッダーに有効なBearerトークンが必要です。

メールとパスワードによるログイン

サインアップ

新しいアカウントと組織を作成します:

`bash curl -X POST https://api.zenflip.io/v1/auth/signup \ -H "Content-Type: application/json" \ -d '{ "email": "developer@example.com", "password": "SecureP@ssw0rd!", "name": "Alex Chen", "organizationName": "Acme Publishing" }' `

サインアップ後、確認メールが送信されます。フルアクセスが許可される前にアカウントの確認が必要です。

ログイン

認証情報をJWTトークンと交換します:

`bash curl -X POST https://api.zenflip.io/v1/auth/login \ -H "Content-Type: application/json" \ -d '{ "email": "developer@example.com", "password": "SecureP@ssw0rd!" }' `

レスポンス:

`json { "accessToken": "eyJhbGciOiJIUzI1NiIs...", "refreshToken": "eyJhbGciOiJIUzI1NiIs...", "expiresIn": 3600, "user": { "id": "550e8400-e29b-41d4-a716-446655440000", "email": "developer@example.com", "name": "Alex Chen", "role": "owner", "emailVerified": true }, "organization": { "id": "660e8400-e29b-41d4-a716-446655440000", "name": "Acme Publishing", "plan": "creator" } } `

accessTokenはexpiresInで示された秒数後に期限切れになります(デフォルト:3600秒 / 1時間)。refreshTokenはより長い有効期間を持ち、認証情報を再入力せずに新しいアクセストークンを取得するために使用されます。

トークンの使用

すべての保護されたリクエストでAuthorizationヘッダーにアクセストークンを含めます:

`bash curl https://api.zenflip.io/v1/publications \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." `

JavaScript fetchを使用する場合:

`javascript const response = await fetch("https://api.zenflip.io/v1/publications", { headers: { "Authorization": Bearer ${accessToken}, "Content-Type": "application/json" } }); const { data, meta } = await response.json(); `

トークンリフレッシュ

アクセストークンが期限切れになった場合、リフレッシュトークンを使用して、ユーザーに再ログインを求めることなく新しいトークンペアを取得します:

`bash curl -X POST https://api.zenflip.io/v1/auth/refresh \ -H "Content-Type: application/json" \ -d '{ "refreshToken": "eyJhbGciOiJIUzI1NiIs..." }' `

レスポンス:

`json { "accessToken": "eyJhbGciOiJIUzI1NiIs...", "refreshToken": "eyJhbGciOiJIUzI1NiIs...", "expiresIn": 3600 } `

リフレッシュ呼び出しのたびに、アクセストークンとリフレッシュトークンの両方がローテーションされます。新しいリフレッシュトークンを保存し、古いものを破棄してください。ZenFlipウェブダッシュボードを使用している場合、トークンは自動的にhttpOnlyクッキーとしても設定されます。

JavaScriptリフレッシュ例

`javascript async function refreshAccessToken(currentRefreshToken) { const response = await fetch("https://api.zenflip.io/v1/auth/refresh", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ refreshToken: currentRefreshToken }) });

if (!response.ok) { throw new Error("Token refresh failed, user must re-authenticate"); }

const tokens = await response.json(); // tokens.accessTokenとtokens.refreshTokenを安全に保存 return tokens; } `

Google OAuth

ZenFlipはシングルサインオン用にGoogle OAuthをサポートしています。このフローはブラウザベースで、サーバーサイドリダイレクトを使用します。

フロー

  1. ユーザーをhttps://api.zenflip.io/v1/auth/googleにリダイレクトします。

  2. ユーザーがGoogleで認証し、同意を付与します。

  3. Googleがhttps://api.zenflip.io/v1/auth/google/callbackにリダイレクトします。

  4. APIがhttpOnly認証クッキーを設定し、ユーザーをフロントエンドのコールバックURL(例:https://app.zenflip.io/auth/google/callback?isNew=0)にリダイレクトします。

isNewパラメータは、新しいアカウントが作成されたか(1)、既存のアカウントにログインしたか(0)を示します。フロントエンドはこのフラグを読み取って、オンボーディングを表示するかどうかを判断します。

統合例

`html <a href="https://api.zenflip.io/v1/auth/google" class="btn-google"> Googleでサインイン </a> `

OAuthコールバック後、ユーザーのブラウザには認証クッキーが設定されています。ブラウザからの以降のAPI呼び出しは、これらのクッキーを介して認証されます。

APIキー(サーバー間通信) — 近日対応予定 {#api-keys}

💡

近日対応予定 — 2026年第2四半期に利用可能。 サーバー間統合用のAPIキー認証は現在開発中です。機能がリリースされ次第、このセクションを更新します。

バックエンド統合、Webhook、またはCI/CDパイプラインの場合、APIキーはログイン/リフレッシュフローを必要としない、よりシンプルな認証パスを提供します。それまでは、すべてのAPIアクセスにJWTトークンを使用してください。

メール確認

新しいアカウントにはメール確認が必要です。APIは確認と確認メールの再送信のためのエンドポイントを提供しています:

`bash

メールリンクのトークンで確認

curl -X POST https://api.zenflip.io/v1/auth/verify-email \ -H "Content-Type: application/json" \ -d '{ "token": "verification-token-from-email" }'

確認メールの再送信

curl -X POST https://api.zenflip.io/v1/auth/resend-verification \ -H "Content-Type: application/json" \ -d '{ "email": "developer@example.com" }' `

パスワードリセット

ユーザーがパスワードを忘れた場合、リセットフローを開始します:

`bash

パスワードリセットメールのリクエスト

curl -X POST https://api.zenflip.io/v1/auth/forgot-password \ -H "Content-Type: application/json" \ -d '{ "email": "developer@example.com" }'

メールのトークンでパスワードをリセット

curl -X POST https://api.zenflip.io/v1/auth/reset-password \ -H "Content-Type: application/json" \ -d '{ "token": "reset-token-from-email", "password": "NewSecureP@ssw0rd!" }' `

現在のユーザープロフィール

認証済みユーザーのプロフィールを取得します:

`bash curl https://api.zenflip.io/v1/auth/me \ -H "Authorization: Bearer YOUR_TOKEN" `

ログアウト

現在のセッションを無効化し、クッキーをクリアします:

`bash curl -X POST https://api.zenflip.io/v1/auth/logout \ -H "Authorization: Bearer YOUR_TOKEN" `

レート制限

認証エンドポイントには、不正利用を防止するための独自のレート制限があります:

エンドポイント

制限

POST /auth/signup

毎分5回

POST /auth/login

毎分10回

POST /auth/refresh

毎分20回

POST /auth/forgot-password

毎分3回

POST /auth/reset-password

毎分5回

POST /auth/resend-verification

毎分3回

Next →
クイックスタートガイド
ZenFlip API認証 | JWT、OAuth、APIキー | ZenFlip