[Django]InstagramのAPIを使用しPythonで情報を取得する


はじめに

pythonでInstagramのAPIを使ってユーザー情報を取得しました。現在公開されている情報が少ないと感じたので備忘録として残しておきます。
アクセストークンを利用するための認証コードの取得からアクセストークンの取得とユーザーの情報の取得までを行います。

前提としてfacebook for developersでアプリの設定を終えている状態とします。
また今回はInstagram Basic Displayを使います。設定の詳しいやり方は以下を参照してください

環境

Django 3.1
Python 3.9.2
facebook for developers設定済
Instagram Basic Display設定済

認証コードの取得

まずpip installinstagram-basic-displayをインポートします

$ pip3 install instagram-basic-display
$ python manage.py shell
>>> from instagram_basic_display.InstagramBasicDisplay import InstagramBasicDisplay

>>> instagram_basic_display = InstagramBasicDisplay(app_id ='InstagramアプリID', app_secret='Instagram App Secret',redirect_url='設定したリダイレクトURL')
# redirect_urlはhttpで設定できないのでhttpsにすること

>>> print(instagram_basic_display.get_login_url())
https://api.instagram.com/oauth/authorize?client_id=11111111111111&redirect_uri=https://hogehoge.com%2F&scope=user_profile%2Cuser_media&response_type=code
# printしたURLをクリック

URLをクリックすると以下の画面に飛ぶのでAllowをクリックしてください

成功すると、前のステップで指定したリダイレクトURLにリダイレクトされ、URLに認証コードが付加されます。


https://hogehoge.com?code=NOFDNAON3DKMFDMDOKFDMOLFKMDFK
            # ↑code=から右の部分が認証コードになる(1時間だけ有効)

こちらの取得した認証コードをコピーしてください

アクセストークンを取得

先ほど取得した認証コードを使ってアクセストークンを取得します

>>> auth_token = instagram_basic_display.get_o_auth_token('取得した認証コード')

>>> auth_token
{'access_token': 'アクセストークン', 'user_id': 'ユーザーID'}

ユーザー情報の取得

アクセストークンを利用しユーザー情報も取得していきます

>>> instagram_basic_display.set_access_token('取得したアクセストークン')

>>> profile = instagram_basic_display.get_user_profile()

>>> profile
{'account_type': 'PERSONAL', 'id': '1111111111111', 'media_count': 1, 'username': 'hogehoge'}

これでユーザー情報を取得することができます。

参考