Ich habe gerade tweepy verpackt, aber es ist mühsam, alten Code abzufangen und sich jedes Mal daran zu erinnern, wie man ihn verwendet, also meine Twitter-API-Bibliothek und Hinweise zur Verwendung.
Legen Sie die folgenden Werte in den Umgebungsvariablen fest.
--TWITTER_CONSUMER_KEY
: "Consumer Key (API Key)" auf der Registerkarte "Keys and Access Tokens" der Twitter App
--TWITTER_CONSUMER_SECRET
: "Consumer Secret (API Secret)" auf der Registerkarte "Keys and Access Tokens" der Twitter App
--TWITTER_CALLBACK_URL
: "Rückruf-URL", die auf der Registerkarte "Einstellungen" der Twitter-App festgelegt wurde
twitter.py
# -*- 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', '')
Der Code, den ich schreibe, ist ein Beispielcode für Flasche.
@get('/twitter_login')
def twitter_login():
auth_url, request_token_key, request_token_secret = twitter.generate_auth_url()
# request_token_Schlüssel und Anfrage_token_Speichern Sie das Geheimnis in der Sitzung.
redirect(auth_url)
Rufen Sie twitter.generate_auth_url
auf, um die URL, das Anforderungs-Token und das Geheimnis auszugeben, die an Twitter gesendet werden sollen.
Anschließend werden das Anforderungstoken und das Geheimnis in der Sitzung gespeichert. Der hier gespeicherte Wert wird beim Erwerb eines Zugriffstokens bei der Verarbeitung des Rückrufs von Twitter verwendet.
Ich denke, dass die Implementierung je nach Person unterschiedlich ist, aber ich speichere das Anforderungstoken und das Geheimnis in der Datenbank und setze nur das Anforderungstoken in das Cookie. Als Maßnahme gegen CSFR können auch * Zugriffsquellen-IP * oder * Benutzeragent * in die Datenbank aufgenommen werden.
Dann leiten Sie zu Twitter weiter.
@get('/twitter_callback')
def twitter_callback():
#In der Sitzung gespeichertes Anforderungstoken (Anforderung)_token_Schlüssel), geheim (Anfrage)_token_geheim werden).
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)
#Verarbeitung wie Benutzerregistrierung und Login
Der Rückruf von Twitter enthält "oauth_verifier". Verwenden Sie also dieses und das Anforderungstoken und das Geheimnis, das Sie in die Sitzung gestellt haben, um das Zugriffstoken und das Geheimnis zu erhalten.
Recommended Posts