Utiliser l'API Twitter avec Python

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.

Ma bibliothèque d'API Twitter

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

Procédure d'authentification OAuth sur le Web

Le code que j'écris est un exemple de code pour Bottle.

1. Émettez une URL pour OAuth

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

2. Obtenez un jeton d'accès

@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

Utiliser l'API Twitter avec Python
Utiliser l'API Trello avec python
Utiliser l'API subsonique avec python3
Collecter des informations sur Twitter avec Python (API Twitter)
[Python] Utiliser JSON avec Python
Utiliser mecab avec Python 3
Utiliser DynamoDB avec Python
Utilisez Python 3.8 avec Anaconda
Utiliser python avec docker
Mémo graphique Twitter avec Python
Utiliser TUN / TAP avec Python
API Web avec Python + Falcon
Soutenez-vous avec l'API Twitter
Appelez l'API avec python3.
Rechercher des tweets Twitter avec Python
Update_with_media réussi avec l'API Twitter
Utilisez l'API e-Stat de Python
Exploration avec Python et Twitter API 1 - Fonction de recherche simple
Python: comment utiliser async avec
Utiliser la caméra Point Grey avec Python (PyCapture2)
Utilisez vl53l0x avec RaspberryPi (python)
Obtenez des avis avec l'API googlemap de python
Exécutez Rotrics DexArm avec l'API Python
Quine Post avec l'API Qiita (Python)
Utilisez NAIF SPICE TOOL KIT avec Python
Utiliser rospy avec virtualenv dans Python3
Accédez à l'API Etherpad-lite avec Python
Publiez plusieurs images Twitter avec python
Utilisez l'API kabu Station® de Python
Utiliser Python mis en pyenv avec NeoVim
Comment utiliser l'API Python d'OpenPose
Utilisez l'API Flickr de Python
Utiliser la synthèse vocale Windows 10 avec Python
Utiliser OpenCV avec Python 3 dans Window
Publiez facilement sur Twitter avec Python 3
Utiliser PostgreSQL avec Lambda (Python + psycopg2)
Accéder à l'API Twitter avec Python
[Python] Comment utiliser l'API Typetalk
Utiliser l'API Google Analytics de Python
[Memo] Tweet sur Twitter avec Python
API Nifty Cloud facile à utiliser avec botocore et python
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
J'ai essayé la gestion du suivi avec l'API Twitter et Python (facile)
FizzBuzz en Python3
Grattage avec Python
Créez automatiquement la documentation de l'API Python avec Sphinx
Statistiques avec python
Utilisez smbus avec python3 sous environnement pyenv
Utiliser DeepL avec python (pour la traduction d'articles)
Client API Slack simple réalisé avec Python
twitter avec python3
Grattage avec Python
Obtenez des données alimentaires avec l'API Amazon (Python)
Python avec Go
[Version septembre 2020] Explique la procédure d'utilisation de l'API Gmail avec Python
Utiliser Amazon Simple Notification Service avec Python