メインコンテンツまでスキップ

OAuth 2.0 認証

Report Flow API は appkey ヘッダによる認証に加えて、OAuth 2.0 / OpenID Connect をサポートしています。サードパーティ統合(Make.com 等)や、独自アプリケーションからの認証フローに利用できます。

利用シーンと選択指針

用途推奨方式
単一ワークスペースの自動化(cURL、社内バッチ)appkey ヘッダ
サーバー間連携(バックエンド → Report Flow)OAuth 2.0 Client Credentials
ユーザー個別の認可(Make.com、外部 SaaS、個人アプリ)OAuth 2.0 Authorization Code + PKCE

エンドポイント

重要: OAuth フロー(Discovery / Authorization / Token / UserInfo)は re-port-flow.com/api/v1 にホストされており、PDF 生成等の保護リソース API(api.re-port-flow.com/v1/...)とは 別ドメインです。発行された Access Token (Bearer) は保護リソース API 側で利用します。

OIDC Discovery ドキュメントから自動取得することを推奨します:

GET https://re-port-flow.com/api/v1/.well-known/openid-configuration

主なエンドポイント:

項目URL
Issuerhttps://re-port-flow.com/api/v1
Authorization${issuer}/oauth/authorize
Token${issuer}/oauth/token
UserInfo${issuer}/oauth/userinfo
保護リソース API(Bearer 利用先)https://api.re-port-flow.com/v1/...

サポート仕様

項目
response_typecode
grant_typesauthorization_code, refresh_token, client_credentials
code_challenge_methodS256(PKCE 必須)
token_endpoint_auth_methodsnone, client_secret_post, client_secret_basic
アクセストークン有効期限3600 秒(1 時間)

スコープ

Scope説明
openidユーザーIDの確認(OIDC)
profileプロフィール情報の取得(本実装ではメールアドレスを含みます)
designs:readデザインの一覧・詳細を表示する(読み取りのみ)
designs:writeデザインを作成・編集する
templates:readテンプレートの一覧・詳細を表示する(読み取りのみ)
templates:writeテンプレートを作成・編集する
pdf:generateテンプレートから PDF を生成する

複数スコープを指定する場合はスペース区切り(例: pdf:generate designs:read)。

クライアント種別

種別is_public認証方式主な用途
Public ClienttruePKCE のみ(client_secret なし)モバイル/SPA、Make.com 等の公開クライアント
Confidential Clientfalseclient_secret 必須サーバー間連携、client_credentials グラント

client_credentials グラントは Confidential Client 専用です。Public Client では使用できません。


Authorization Code フロー(PKCE)

ユーザーごとに認可を取得するフロー。Make.com 等の統合先や、ユーザーが自分のワークスペースに対して操作するアプリで利用します。

1. Authorization リクエスト

GET https://re-port-flow.com/api/v1/oauth/authorize
?response_type=code
&client_id=YOUR_CLIENT_ID
&redirect_uri=https://your-app.example.com/callback
&scope=openid%20profile%20pdf:generate
&state=RANDOM_STATE
&code_challenge=BASE64URL(SHA256(verifier))
&code_challenge_method=S256

ユーザーがログインと同意を完了すると、redirect_uricodestate が付与されてリダイレクトされます。

2. Token リクエスト

POST https://re-port-flow.com/api/v1/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=AUTHORIZATION_CODE
&redirect_uri=https://your-app.example.com/callback
&client_id=YOUR_CLIENT_ID
&code_verifier=ORIGINAL_VERIFIER

レスポンス:

{
"access_token": "eyJhbGc...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_...",
"scope": "openid profile pdf:generate"
}

Confidential Client の場合は client_secret も同時に送信(client_secret_post)するか、Basic 認証ヘッダ(client_secret_basic)で送信します。

3. Refresh Token

POST https://re-port-flow.com/api/v1/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&refresh_token=rt_...
&client_id=YOUR_CLIENT_ID

Client Credentials フロー

サーバー間通信用。ユーザー認可なしで、登録済み Confidential Client が自分のワークスペースに対してアクセストークンを取得します。

Token リクエスト

POST https://re-port-flow.com/api/v1/oauth/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic BASE64(client_id:client_secret)

grant_type=client_credentials
&scope=pdf:generate%20templates:read

または client_secret_post 形式:

POST https://re-port-flow.com/api/v1/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
&scope=pdf:generate%20templates:read

レスポンス(Refresh Token は発行されません):

{
"access_token": "eyJhbGc...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "pdf:generate templates:read"
}

scope を省略した場合は、登録時に許可されたスコープ全体(allowed_scopes)が付与されます。


アクセストークンの利用

発行されたアクセストークンは Authorization: Bearer ヘッダで送信します。appkey ヘッダの代わりに利用できます。

curl -X POST https://api.re-port-flow.com/v1/file/sync/single \
-H "Authorization: Bearer eyJhbGc..." \
-H "Content-Type: application/json" \
-d '{...}'

エラーレスポンス

トークンエンドポイントは RFC 6749 Section 5.2 に従います:

{
"error": "invalid_client",
"error_description": "Invalid client_secret"
}

主なエラーコード:

error状況
invalid_clientclient_id / client_secret が不正
invalid_grant認可コード/リフレッシュトークンが不正・期限切れ
invalid_scope要求スコープが allowed_scopes を超えている
unauthorized_clientPublic Client が client_credentials を要求した等
unsupported_grant_type未対応の grant_type

次のステップ