# API の認証

> Tapjoy Offerwall API を使用して API リクエストを認証し、キャンペーンデータとパフォーマンスを管理します。

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

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

広告主は、このキーを [広告ダッシュボード](https://dashboard.tapjoy.com/reporting/api) で確認できます。

![Offerwallダッシュボードに表示される広告主用のAPIキー。](/api/media?file=/grow/media/images/api_key_advertiser.png)

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

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

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

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

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

以下の例は、curl を使用した同じリクエストを示しています。

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

以下の例は、Ruby を使用してアクセストークンをリクエストし、認証された GraphQL クエリを作成する方法を示しています。

```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" 
} 
```
