[Django]Twitter APIを使おう!

Djangoで取得したTwitterAPIをユーザー詳細ページに使っていきましょう。備忘録的に。

TwitterAPIでユーザーを取得

Twitterログインについては詳しい記事があるので、こちらをご覧ください。

取得したAPIキーの扱いについてはこちらをご覧ください。

TwitterAPIで取得した値を色々な用途で使えるようにtweepyをインストールします。

$ pip install tweepy

settings.pytweepyを使いことを明記。

INSTALLED_APPS = [
    #省略
    'user_auth.apps.UserAuthConfig',

    'social_django',
    'tweepy',
]

さて、プロフィールページを作りましょう。

import tweepy

from django.contrib.auth.models import User
from django.conf import settings

class AccountView(generic.DetailView):
    template_name = 'registration/accounts.html'
    model = User
    slug_url_kwarg = "username"
    slug_field = "username"

    def get_context_data(self, **kwargs):
        context = super(AccountView, self).get_context_data(**kwargs)
        auth = UserSocialAuth.objects.get(user=self.get_object())
        handler = tweepy.OAuthHandler(settings.SOCIAL_AUTH_TWITTER_KEY, settings.SOCIAL_AUTH_TWITTER_SECRET)
        handler.set_access_token(auth.tokens['oauth_token'], auth.tokens['oauth_token_secret'])
        api = tweepy.API(auth_handler=handler)
        data = api.get_user(screen_name=auth.user.username)
        # print(data)
        context['account'] = data
        return context

Twitterで認証をすると、デフォルトのUserモデルに結びつきます。print(data)をしてみるとどんな値が使えるか見てみましょう。例えば、screen_nameとかですね。これで使えるようになりました!

それでは、テンプレートを作成しましょう。

<h1>@{{ account.screen_name }}</h1>
<h2>{{ account.description }}</h2>

他にも、取得したTwitterAPIの値で遊んぼう!Django&Twitter最高!