J'ai juste enveloppé tweepy, mais c'est un problème pour attraper le vieux code et se rappeler comment l'utiliser à chaque fois, donc ma bibliothèque d'API Twitter et des notes sur la façon de l'utiliser.
Définissez les valeurs suivantes dans les variables d'environnement.
--TWITTER_CONSUMER_KEY
: "Clé consommateur (clé API)" dans l'onglet "Clés et jetons d'accès" de l'application Twitter
--TWITTER_CONSUMER_SECRET
: "Consumer Secret (API Secret)" dans l'onglet "Clés et jetons d'accès" de l'application Twitter
--TWITTER_CALLBACK_URL
: "URL de rappel" définie dans l'onglet "Paramètres" de l'application Twitter
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', '')
Le code que j'écris est un exemple de code pour Bottle.
@get('/twitter_login')
def twitter_login():
auth_url, request_token_key, request_token_secret = twitter.generate_auth_url()
# request_token_clé et demande_token_Enregistrez le secret dans la session.
redirect(auth_url)
Appelez twitter.generate_auth_url
pour émettre l'URL, demander le jeton et le secret à envoyer à Twitter.
Ensuite, le jeton de demande et le secret sont enregistrés dans la session. La valeur enregistrée ici est utilisée lors de l'acquisition d'un jeton d'accès dans le traitement du rappel depuis Twitter.
Ici, je pense que l'implémentation diffère selon la personne, mais je stocke le jeton de demande et le secret dans la base de données et je mets uniquement le jeton de demande dans le cookie. De plus, comme mesure par rapport à la CSFR, * l'IP source d'accès * ou * l'agent utilisateur * peuvent également être inclus dans la base de données.
Puis redirigez vers Twitter.
@get('/twitter_callback')
def twitter_callback():
#Jeton de demande (demande) stocké dans la session_token_clé), secret (demande)_token_obtenir le 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)
#Traitement tel que l'enregistrement et la connexion de l'utilisateur
Le rappel de Twitter contient ʻoauth_verifier`, utilisez donc ceci et le jeton de demande et le secret que vous avez mis dans la session pour obtenir le jeton d'accès et le secret.
Recommended Posts