OAuthガイド
すべてのAPI呼び出しには認可が必要で、認可されたAhrefsユーザーの代理として実行されます。 そのために、アプリはそのユーザー用のAPI アクセストークンを取得する必要があります。
Ahrefs Connectは、PKCE(Proof Key for Code Exchange)付きOAuth 2.0 認可コードフローを使用します。 このプロセスには、主に2つのステップがあります:
1. アプリケーションを認可する
ユーザーを次へリダイレクトします:
https://app.ahrefs.com/web/oauth/authorize?response_type=code&client_id={client_id}&scope=apiv3-integration-apps&redirect_uri={redirect_uri}&code_challenge={code_challenge}&code_challenge_method=s256&state={state}
パラメータ:
{client_id}: アカウント設定のAhrefs Connectセクションにある、URLエンコード済みのクライアントID。{redirect_uri}: 同じセクションで登録した、URLエンコード済みのリダイレクトURI。{code_challenge}: S256方式を使用してコード検証子(code verifier)から導出した値:- コード検証子(code verifier)を生成します。暗号学的に安全なジェネレーターを使用し、43〜128文字のランダムな文字列にします。 使用可能な文字:
[A-Z] [a-z] [0-9] - . _ ~(RFC7636 セクション4.1参照)。 - コード検証子のSHA-256ハッシュを計算します。
- ハッシュをBase64 URLセーフエンコードします。
- このエンコードした値を
code_challengeとして使用します(RFC7636 セクション4.2参照)。
- コード検証子(code verifier)を生成します。暗号学的に安全なジェネレーターを使用し、43〜128文字のランダムな文字列にします。 使用可能な文字:
{state}: リクエストとコールバック間の状態を維持するために、推測困難な不透明な値を生成します。 認可サーバーは、ユーザーをアプリにリダイレクトして戻す際に、この値を含めます。 (RFC6749 セクション4.1.1参照)
info
レガシーアプリ開発者向けの注意:
レガシー統合(API v2)と新しいAhrefs Connect(API v3)は、同じOAuthクライアントを共有します。 つまり、リダイレクトURIも共有されます。アプリの旧バージョンと新バージョンそれぞれに、別々の本番用リダイレクトURIを設定することはできません。
新しいアプリが Ahrefs によって審査・有効化され、リリースの準備が整ってから のみ、アカウント設定で本番用リダイレクト URI を更新することをおすすめします。
両方のバージョンで同じリダイレクト URI を使い続けたい場合は、{state} パラメータを使ってリクエストを区別できます。 たとえば、従来のアプリには固有の文字列を、新しいアプリには別の文字列を付けます。 ユーザーをアプリにリダイレクトして戻す際、OAuth サーバーから同じ {state} 値が返されるため、サーバー側でこの値に応じて処理を分岐できます。 こうすることで、既存の連携を壊すことなく、ユーザーは両方のバージョン向けにトークンを引き続き生成できます。

ユーザー体験:
- ユーザーには Ahrefs の認可(承認)画面が表示されます。
- ユーザーはアプリに対して、自分に代わって Ahrefs API へアクセスする権限を許可します。
- Ahrefs は以下を付与して、ユーザーを リダイレクト URI にリダイレクトします:
codeパラメータ — 手順 2 で使用しますstateパラメータ — 元のリクエストと一致することを検証します。
2. access_token を取得する
https://ahrefs.com/oauth/token に POST リクエストを送信して、code を access_token に交換します。
リクエスト本文には application/x-www-form-urlencoded 形式で パラメータを送信 します(RFC6749 Section 4.1.3 を参照):
grant_type:authorization_codeclient_id:{client_id}(手順 1 のものと一致している必要があります)redirect_uri:{redirect_uri}(手順 1 のものと一致している必要があります)code:{code}(手順 1 で取得)code_verifier:{original_code_verifier}(手順 1 の変換前の値)client_secret:{client_secret}(Web アプリのみ — アカウント設定の Ahrefs Connect セクションにあります。 デスクトップアプリの場合は省略します。)
レスポンス例:
{
"access_token": "\<API リクエストで使用するトークン>",
"expires_in": \<アクセストークンの有効期間(秒)>,
"token_type": "Bearer",
"scope": "apiv3-integration-apps"
}
トークンの有効期間と再接続
- リフレッシュトークンは発行されません。
- アクセストークンの有効期間は1年です。 有効期限が切れた後は、ユーザーはOAuth経由で**再接続(再認可)**する必要があります。
info
セキュリティ上の注意:
- 認可中であれ後からであれ(UI、ログ、URL、クライアント側コードなど)、
access_tokenをエンドユーザーに絶対に公開しないでください。 - Webアプリの場合、
client_secretはサーバー側にのみ保存してください。 - 承認プロセスの一環として、安全なトークンの取り扱いを示す必要があります。