Skip to content

Instantly share code, notes, and snippets.

@polikeiji
Created November 9, 2015 07:18
Show Gist options
  • Save polikeiji/27ef174f564b00071ce6 to your computer and use it in GitHub Desktop.
Save polikeiji/27ef174f564b00071ce6 to your computer and use it in GitHub Desktop.
PythonでTwitter APIを使う ref: http://qiita.com/polikeiji/items/37f89fb4ed1a25fd912c
@get('/twitter_login')
def twitter_login():
auth_url, request_token_key, request_token_secret = twitter.generate_auth_url()
# request_token_keyとrequest_token_secretをセッションに保存する。
redirect(auth_url)
@get('/twitter_callback')
def twitter_callback():
# セッションに保存したリクエスト・トークン(request_token_key)、シークレット(request_token_secret)を取得する。
oauth_verifier = request.query['oauth_verifier']
access_token_key, access_token_secret = twitter.get_access_token(
twitter_connect.request_token_key,
twitter_connect.request_token_secret,
oauth_verifier)
twitter_user = twitter.verify_credentials(access_token_key, access_token_secret)
# ユーザー登録とかログインとかの処理
# -*- coding: utf-8 -*-
import os
import urllib2
import os.path
import logging
import traceback
import oauthlib
import tweepy
CONSUMER_KEY = os.environ.get('TWITTER_CONSUMER_KEY')
CONSUMER_SECRET = os.environ.get('TWITTER_CONSUMER_SECRET')
CALLBACK_URL = os.environ.get('TWITTER_CALLBACK_URL')
#
def api(access_token = None, access_token_secret = None, with_callback_url = False):
if with_callback_url:
auth = tweepy.OAuthHandler(
consumer_key = CONSUMER_KEY,
consumer_secret = CONSUMER_SECRET,
callback_url = CALLBACK_URL)
else:
auth = tweepy.OAuthHandler(
consumer_key = CONSUMER_KEY,
consumer_secret = CONSUMER_SECRET)
if access_token is not None and access_token_secret is not None:
auth.set_access_token(access_token, access_token_secret)
return tweepy.API(auth)
# API
def get_tweets(screen_name = None, hashtag = None, count = 200):
if screen_name is not None:
cursor = tweepy.Cursor(api().user_timeline,
screen_name = screen_name, count = 200, exclude_replies = True)
elif hashtag is not None:
cursor = tweepy.Cursor(api().search, q = u"#{0}".format(hashtag), count = 200)
if count is not None:
return cursor.items(count)
else:
return cursor.items()
def tweet_link(tweet):
return "https://twitter.com/{screen_name}/status/{tweet_id}".format(
screen_name = tweet.user.screen_name,
tweet_id = tweet.id_str)
def get_friends(screen_name):
return tweepy.Cursor(api().friends, screen_name = screen_name, count = 200).items()
# OAuth
def generate_auth_url():
oauth_handler = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET, CALLBACK_URL)
redirect_url = oauth_handler.get_authorization_url(signin_with_twitter = True)
request_token = oauth_handler.request_token
return redirect_url, request_token['oauth_token'], request_token['oauth_token_secret'],
def get_access_token(request_token_key, request_token_secret, oauth_verifier):
oauth_handler = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
oauth_handler.request_token = {
'oauth_token': request_token_key,
'oauth_token_secret': request_token_secret,
'oauth_callback_confirmed': True,
}
oauth_handler.get_access_token(oauth_verifier)
return oauth_handler.access_token, oauth_handler.access_token_secret
def verify_credentials(access_token, access_token_secret):
api = api(access_token, access_token_secret)
return api.verify_credentials()
# Utility
def get_big_profile_image_url(profile_image_url):
return profile_image_url.replace('_normal', '')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment