6
@ekzemplaro

Twitter の OAuth認証 (Python3)

この記事は最終更新日から1年以上が経過しています。

次の記事にある内容をなぞってみました。
[Python] OAuth認証でTwitter連携/ログインを実装する

consumer_token と consumer_secret から redirect_url を得ます

get_redirect_url.py
#! /usr/bin/python
#
#   get_redirect_url.py
#
#                   Nov/29/2018
# ------------------------------------------------------------------
import tweepy
consumer_token = ""
consumer_secret = ""

auth = tweepy.OAuthHandler(consumer_token, consumer_secret)
redirect_url = auth.get_authorization_url()
print(redirect_url)
# ------------------------------------------------------------------

実行結果

$ ./get_redirect_url.py 
https://api.twitter.com/oauth/authorize?oauth_token=7w-KbQAA12345BBAA8ABZ16_S1g

Twitter にログインした状態で
このアドレスにアクセスすると、次のような画面になります。
twitter_nov2901.png

Authorize app をクリックすると、
別の画面に飛び、アドレスバーに、oauth_token と oauth_verifier が表示されます。
次のような感じです。

https://ekzemplaro.org/?oauth_token=FqyTcwAABBBA9AA8AACCZ16ZAiM&oauth_verifier=86cg6dZPbAAplhikGWk12XHnSDbOSIHC

oauth_token と oauth_verifier から access_token を得ます。

get_access_token.py
#! /usr/bin/python
#
#   get_access_token.py
#
#                       Nov/29/2018
# ------------------------------------------------------------------
import  sys

from requests_oauthlib import OAuth1Session
from urllib.parse import parse_qsl

base_url = 'https://api.twitter.com/'
access_token_url = base_url + 'oauth/access_token'

consumer_key = ""
consumer_secret = ""

oauth_token = ""
oauth_verifier = ""

sys.stderr.write("*** 開始 ***\n")

twitter = OAuth1Session(
        consumer_key,
        consumer_secret,
        oauth_token,
        oauth_verifier,
    )

response = twitter.post(
        access_token_url,
        params={'oauth_verifier': oauth_verifier}
    )

access_token = dict(parse_qsl(response.content.decode("utf-8")))

print(access_token)
#
sys.stderr.write("*** 終了 ***\n")
# ------------------------------------------------------------------

実行結果

$ ./get_access_token.py 
{'oauth_token': '1066884441803311104-UXNebbb9Hg7wTVanxTv9UoHQ7dRqG6', 'oauth_token_secret': 'yfNZjqAZbwMFrvqlkI9GaaaaAEw3BMq3whGJadQibegYU', 'user_id': '3166889501999311104', 'screen_name': 'testabcd001'}

ここで得られた oauth_token と oauth_token_secret を使って testabcd001 の timeline を読んだりできます。

 

6
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ekzemplaro
Python3,Node.js,Go,PHP,Nginx,RaspberryPi あたりがカバー範囲です。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
3000文字Tips - 知ると便利なTipsをみんなへ届けよう
~
競技プログラミング研究月間 - みんなでさらなる高みを目指そう
~