twitterのAPIを使う(APIアカウント登録とツイートの取得)

#プロローグ
TwitterのAPIを使ってツイートしたり、ツイートを取得したりします。

#アカウント登録する
※APIの登録画面は定期的にバージョンアップされているようです。
これは2020/8/15時点の方法になります。

通常のtwitterアカウントを事前に作っておき、ログインした状態でtwitterの[開発用のサイト](https://developer.twitter.com/en)へアクセスします。
右上の「Apply」を押下します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/86f8ef30-472e-752a-6056-f3a9b8d3a4c3.png)

「Apply for a developer account」を押下します。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/0ed90bb0-61e5-a727-2751-3eebbdb25086.png)

今回はbotを作るつもりなので、Hobbyistの「Making a bot」を選択して、「Next」を押下します。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/3c859272-e4d8-dd82-aa5b-ba27edb3e487.png)

アカウントの内容を確認し、国と名前を入力し「Next」を押下します。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/cfef3196-1eb6-5ffd-5268-a614d19b2358.png)

用途などの入力が必要になります。
それぞれ英語で入力して「Next」を押下します。
英語は適当な翻訳サイトで翻訳して貼り付ければOKでした。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/794e7527-2153-f033-c17f-fc1b49aa1be0.png)

内容を確認して問題がなければ「Looks good!」を押下します。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/4391cde5-98e4-71cd-1867-153c9bd5b20d.png)

承認するので、「Submit Application」を押下します。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/379ebf04-7865-92bf-2e0b-beaee62ef4d9.png)

twitterに登録してあるメールアドレスに登録を完了させるメールが送信されます。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/7ea4a028-2106-b3e1-0415-8f68fa557891.png)

「Confirm your email」を押下します。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/aa8432a2-7bfe-12db-b0ba-38f62dbe0120.png)

アプリケーションの名前を入力し、「complete」を押下します。
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/26c26d2a-edc9-fb01-6be4-4aff39116e04.png)

APIキーなどが発行されます。
これは後からでも確認できるので、そのまま「App settings」を押下します。
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/909a0a89-7692-20b7-d0d8-bcae968f0919.png)

Accessトークンを発行します。「Authentication Tokens」にある「Regenerate」を押下します。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/b0fca065-9414-0bb0-1a9a-0443b6945c7d.png)

アクセストークンが発行されるので、保存しておきます。
※このアクセストークンは後から確認できないので、保存し忘れたら再度「Regenerate」が必要です。
保存ができたら「Yes. I saved them」を押下します。
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538462/e9be62b3-0586-1288-8ebb-1e290e61bd24.png)

#使ってみる
pythonを使ってサクッと取得したAPIキーが利用可能か確認してみます。

```python:config.py
CONSUMER_KEY = "hogehoge"
CONSUMER_SECRET = "hogehoge"
ACCESS_TOKEN = "hogehoge"
ACCESS_TOKEN_SECRET = "hogehoge"
```

```python:test.py
# -*- coding:utf-8 -*-
import json
import config
from requests_oauthlib import OAuth1Session
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
twitter = OAuth1Session(CK, CS, AT, ATS) #Twitter認証
url = "https://api.twitter.com/1.1/statuses/user_timeline.json" #エンドポイント
params ={'count' : 1}
res = twitter.get(url, params = params)
if res.status_code == 200:
    tweets = json.loads(res.text)
    for tweet in tweets:
        print('name      : ' + tweet['user']['name'])
        print('text      : ' + tweet['text'])
        print('created_at: ' + tweet['created_at'])
        print('*******************************************')
else:
    print("Failed: %d" % res.status_code)
```

```bat
C:\hoge>python test.py
name      : hogehogeo
text      : HelloWorld!!
created_at: Sat Aug 15 05:42:25 +0000 2020
*******************************************
```

#エピローグ
登録してpythonコードで確認することができました。