Instagram Graph API アクセストークンの取得

# Instagram Graph API のアクセストークンの取得

- アプリではアクセストークンを使用してグラフAPI呼び出しが行われる
- アクセストークンには有効期限が設定される

## マイアプリ作成
Meta for Developerの[マイアプリ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/f2a8027d-7baf-4b50-71a1-da4c943244bc.png)

[アプリを作成]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/e09ca82d-3b62-61f3-c34b-75fdfb31d0bf.png)

[その他]を選択して次へをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/4c84aea9-5b56-ea67-123a-ec06bdb28645.png)

[ビジネス]を選択して次へをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/62d9d091-6b4a-3b2e-fb65-0224269f1f1f.png)

[アプリ名]、[メールアドレス]、[ビジネスアカウント]を設定して[アプリを作成]をクリック
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3438323838302f37626532313765612d323061312d396436372d313934382d3664633335626638316138322e70 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/faf05142-8924-8f8f-7c5d-252ec09aa0c7.png)

アプリの設定で[InstagramグラフAPI]を設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/e7f42734-3090-58ca-17c7-7a9e4221ac31.png)

[アプリの設定]→[ベーシック]にて`アプリID`と`app secret`をメモ📝
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/6e3294c6-3dd9-7d4b-0395-82f523b629f6.png)

## グラフAPIエクスプローラ
[ツール]→[グラフAPIエクスプローラ]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/d1dee1c6-693e-1f08-980f-a1db14510076.png)

[トークンを取得]→[ページアクセストークンを取得]をクリックすると、`短期アクセストークン`が生成される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/52cf46c9-0117-387b-87d5-789c6f489c6e.png)

<details><summary>details</summary>
ユーザーアクセストークン
</details>


[オプション]をクリックしてアクセスを許可するオプションを選択できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/b001f058-b54f-8e20-96b6-14c193dbf572.png)

## アクセストークンの取得

### 長期アクセストークン
`アプリID`、`app secret`、`短期ページアクセストークン`を使用して`長期ページアクセストークン`を生成
以下のURLにアクセスする

```
https://graph.facebook.com/v19.0/oauth/access_token?grant_type=fb_exchange_token&client_id={アプリID}&client_secret={app-secret}&fb_exchange_token={短期ページアクセストークン}
```

レスポンスにある`access_token`(長期ページアクセストークン)を取得
```json
{
    "access_token": "ACCESS_TOKEN",
    "token_type": "bearer",
    "expires_in": 5183330
}
```

再びURLにアクセスする
```
https://graph.facebook.com/v19.0/me?access_token={長期ページアクセストークン}
```

レスポンスにて`id`を取得する
```json
{
    "name": "YOUR_NAME",
    "id": "YOUR_ID"
}
```

### 無期限アクセストークン
`app-scoped-user-id`と長期ページアクセストークン（約60日）を使用
`app-scoped-user-id`は、[アクセストークンデバッガー](https://developers.facebook.com/tools/debug/accesstoken/)でも確認できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482880/ee0ee27c-bf4a-7cde-f829-f9eec047146c.png)

URLにアクセスする
```
https://graph.facebook.com/v19.0/{app-scoped-user-id}/accounts?access_token={長期ページアクセストークン}
```

レスポンスにて無期限アクセストークンを取得する
```json
{
    "data": [
        {
            "access_token": "EAA...",
            "category": "",
            "category_list": [
                {
                    "id": "",
                    "name": ""
                }
            ],
            "name": "",
            "id": "",
            "tasks": [
                "ADVERTISE",
                "ANALYZE",
                "CREATE_CONTENT",
                "MESSAGING",
                "MODERATE",
                "MANAGE"
            ]
        }
    ],
    "paging": {
        "cursors": {
            "before": "",
            "after": ""
        }
    }
}
```



## Reference
- [Metaのアクセストークン](https://developers.facebook.com/docs/facebook-login/guides/access-tokens)
- [グラフAPI 概要](https://developers.facebook.com/docs/graph-api/overview)