Verwenden Sie die Twitter-API mit Python

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.

Meine Twitter API-Bibliothek

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', '')

Verfahren zur OAuth-Authentifizierung im Web

Der Code, den ich schreibe, ist ein Beispielcode für Flasche.

1. Geben Sie eine URL für OAuth ein

@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.

2. Holen Sie sich das Zugriffstoken

@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

Verwenden Sie die Twitter-API mit Python
Verwenden Sie die Trello-API mit Python
Verwenden Sie die Unterschall-API mit Python3
Sammeln von Informationen von Twitter mit Python (Twitter API)
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Mecab mit Python 3
Verwenden Sie DynamoDB mit Python
Verwenden Sie Python 3.8 mit Anaconda
Verwenden Sie Python mit Docker
Twitter-Grafiknotiz mit Python
Verwenden Sie TUN / TAP mit Python
Web-API mit Python + Falcon
Unterstützen Sie sich mit der Twitter API
Rufen Sie die API mit python3 auf.
Suche nach Twitter-Tweets mit Python
Erfolgreiches update_with_media mit Twitter API
Verwenden Sie die e-Stat-API von Python
Crawlen mit Python und Twitter API 1-Einfache Suchfunktion
Python: So verwenden Sie Async mit
Verwenden Sie eine Point Grey-Kamera mit Python (PyCapture2).
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Holen Sie sich Bewertungen mit Python Googlemap API
Führen Sie Rotrics DexArm mit der Python-API aus
Quine Post mit Qiita API (Python)
Verwenden Sie NAIF SPICE TOOL KIT mit Python
Verwenden Sie rospy mit virtualenv in Python3
Klicken Sie mit Python auf die Etherpad-Lite-API
Veröffentlichen Sie mehrere Twitter-Bilder mit Python
Verwenden Sie die kabu Station® API von Python
Verwenden Sie Python in pyenv mit NeoVim
Verwendung der Python-API von OpenPose
Verwenden Sie die Flickr-API von Python
Verwenden Sie die Windows 10-Sprachsynthese mit Python
Verwenden Sie OpenCV mit Python 3 in Window
Mit Python 3 einfach auf Twitter posten
Verwenden Sie PostgreSQL mit Lambda (Python + psycopg2)
Greifen Sie mit Python auf die Twitter-API zu
[Python] Verwendung der Typetalk-API
Verwenden Sie die Google Analytics-API von Python
[Memo] Tweet auf Twitter mit Python
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Versuchen Sie, mit Python schnell und einfach auf die Twitter-API zuzugreifen
Ich habe versucht, Follow Management mit Twitter API und Python (einfach)
FizzBuzz in Python3
Scraping mit Python
Erstellen Sie automatisch eine Python-API-Dokumentation mit Sphinx
Statistik mit Python
Verwenden Sie smbus mit python3 in einer pyenv-Umgebung
Verwenden Sie DeepL mit Python (für die Artikelübersetzung)
Einfacher Slack API-Client mit Python
Twitter mit Python3
Scraping mit Python
Holen Sie sich Lebensmitteldaten mit Amazon API (Python)
Python mit Go
[Version September 2020] Erläutert das Verfahren zur Verwendung der Google Mail-API mit Python
Verwenden Sie den Amazon Simple Notification Service mit Python