# API の認証

> Tapjoy Offerwall API で API リクエストを認証し、ユーザーエンゲージメントと収益化データを管理するための承認済みアクセスを取得します。

## アクセスのリクエスト##requesting-access

リクエストは、標準の two-legged OAuth2 フローを使用して認証されます。つまり、エンコードされた API キーを使用して`access_token` がリクエストされ、その結果の `access_token` を使用して今後のリクエストに対して認証が行われます。

API キーは、[LTV ダッシュボード](https://ltv.tapjoy.com/) で App (アプリ) > Settings (設定) > App Settings (アプリ設定) を選択し、下にスクロールして API Keys (API キー) を選択することで確認できます。

![Offerwallダッシュボードに表示されるマーケティングAPIキー。](/api/media?file=/grow/media/images/api_key.png)

アクセストークンの生存期間は 1 時間であり、更新することはできません。トークンが期限切れになった場合は、Reporting API キー/Marketing API キーを使用して新しいトークンをリクエストする必要があります。

アクセストークンをリクエストするには、API キーを使用して承認ヘッダーを含む POST リクエストを送信する必要があります。認証情報が有効な場合、そのレスポンスにはアクセストークンと、トークンが期限切れになるまでの秒数が含まれます。

### リクエストの例##example-request

以下の例は、Raw HTTP、curl、および Ruby を使用したアクセストークンのリクエスト方法を示しています。

1. **Raw**

   ```graphql
   POST /v1/oauth2/token 
   Host: api.tapjoy.com 
   Authorization: Basic <API Key>
   Accept: application/json
   ```

2. **Curl**

   ```curl
   curl -H "Authorization: Basic <API Key>" -X POST https://api.tapjoy.com/v1/oauth2/token
   ```

3. **Ruby**

   ```ruby
   require 'json'
   require 'net/https'

   access_token = "<OAuth Token>"

   query = <<~END
   query {
     user {
       firstName
     }
   }
   END
   json = JSON.dump({query: query})

   http = Net::HTTP.new('api.tapjoy.com', 443)
   http.use_ssl = true

   request = Net::HTTP::Post.new('/graphql')
   request['Authorization'] = "Bearer #{access_token}"
   request.body = json
   response = http.request(request)

   result = JSON.parse(response.body)
   data = result['data']
   errors = result['errors']
   ```

### 成功反応##successful-response

リクエストが成功すると、200の状態とアクセストークンとその有効期限の継続時間が秒単位で返されます。

```graphql
status 200 
{ 
"access_token": "token_string",
"token_type": "bearer",
"expires_in":3600,
"refresh_token": null 
} 
```

### Unsuccessful 反応##unsuccessful-response

API キーが無効または欠落している場合、リクエストは 401 状態を返します。

```graphql
status 401
{ 
"error":"Unauthorized" 
} 
```

## アクセストークンの使用##using-the-access-token

`access_token` を取得したら、API にリクエストできます。`access_token`は、承認ヘッダー内の "Bearer" タイプのすべてのリクエストとともに送信する必要があります。`access_token` が期限切れであるか存在しない場合、レスポンスの状態は 401 Unauthorized になります。

### リクエストの例##example-request

以下の例は、認証された API リクエストに必要なヘッダーを示しています。

```curlrc
POST /v4/audiences 
Host: api.tapjoy.com 
Authorization: Bearer <token_string> 
Accept: application/json
```

### トークンがない/無効なトークン反応##missing-or-invalid-token-response

アクセストークンが見つからないか期限切れの場合、リクエストは 401 状態を返します。

```curlrc
status 401 
{ 
"error":"Unauthorized" 
} 
```
