[PR]
アカウント認証
これは Twitter の Authentication documentation を補足するものです.
はじめに
Tweepy は, OAuth 1.0a User Context, OAuth 2.0 Bearer Token (アプリのみ)および OAuth 2.0 Authorization Code Flow with PKCE (User Context) の認証方式をサポートします.
Twitter API v1.1
OAuth 2.0 Bearer Token (App-Only)
ベアラートークンを生成するもっともシンプルな方法は, Twitter Developer Portal Projects & Apps page にあるKeys and Tokens タブで行います.
ベアラートークンで OAuth2BearerHandler
を初期化し, OAuth2BearerHandler
インスタンスで API
を初期化することができます.
import tweepy
auth = tweepy.OAuth2BearerHandler("Bearer Token here")
api = tweepy.API(auth)
また, その代わりに同じページにある API / コンシューマキー及びシークレットを用いて, OAuth2AppHandler
を初期化することもできます.
import tweepy
auth = tweepy.OAuth2AppHandler(
"API / Consumer Key here", "API / Consumer Secret here"
)
api = tweepy.API(auth)
OAuth 1.0a User Context
同様に, 開発者アカウントとして認証する最も簡単な方法は, Twitter Developer Portal Projects & Apps page にあるアプリの Keys and Tokens タブからアクセストークンとアクセストークンシークレットを生成することです.
また同じページにあるアプリの API コンシューマキーとコンシューマシークレットも必要です.
4 つの認証情報を使って OAuth1UserHandler
を初期化し, OAuth1UserHandler
instance:: を使って, API
を初期化することができます.
import tweepy
auth = tweepy.OAuth1UserHandler(
"API / Consumer Key here", "API / Consumer Secret here",
"Access Token here", "Access Token Secret here"
)
api = tweepy.API(auth)
異なるユーザとして認証する場合は 3-legged OAuth を見てください.
Twitter API v2
Twitter API v2 用の Tweepy のインターフェースである Client
はOAuth 2.0 ベアラートークン (アプリのみ) とOAuth 1.0 User Context 認証を行います.
OAuth 2.0 Bearer Token (App-Only)
ベアラートークンを生成するもっともシンプルな方法は, Twitter Developer Portal Projects & Apps page にあるKeys and Tokens タブで行います.
この場合, Client
を初期化するためにただベアラートークンを渡せばすみます.
import tweepy
client = tweepy.Client("Bearer Token here")
OAuth 1.0a User Context
同様に, 開発者アカウントとして認証する最も簡単な方法は, Twitter Developer Portal Projects & Apps page にあるアプリの Keys and Tokens タブからアクセストークンとアクセストークンシークレットを生成することです.
また同じページにあるアプリの API コンシューマキーとコンシューマシークレットも必要です.
この場合, Client
を初期化するためにただ 4 つの認証情報を渡せばすみます.
import tweepy
client = tweepy.Client(
consumer_key="API / Consumer Key here",
consumer_secret="API / Consumer Secret here",
access_token="Access Token here",
access_token_secret="Access Token Secret here"
)
異なるユーザとして認証する場合は 3-legged OAuth を見てください.
3-legged OAuth
このセクションは Twitter の 3-legged OAuth flow documentation を補足するものです.
開発者アカウント以外のユーザとして認証するためには, 3-legged OAuth の方法でアクセストークンを取得する必要があります.
まず Twitter Developer Portal Projects & Apps page の Settings タブにあるアプリの User authentication settings セクションでOAuth 1.0 の設定をオンにする必要があります. またこれを行うには, Callback もしくは Redirect の URI / URL を設定する必要があります.
次にアプリの API コンシューマキーとコンシューマシークレットが必要です. これはアプリの Twitter Developer Portal Projects & Apps page にある Keys and Tokens タブで見つけられます.
その後, OAuth1UserHandler
を初期化できます.
import tweepy
oauth1_user_handler = tweepy.OAuth1UserHandler(
"API / Consumer Key here", "API / Consumer Secret here",
callback="Callback / Redirect URI / URL here"
)
そして, 認証 URL を取得できます.
print(oauth1_user_handler.get_authorization_url())
Twitter でログインまたはサインインを利用するには認証 URL を取得するときに signin_with_twitter
パラメータを設定することができます.
print(oauth1_user_handler.get_authorization_url(signin_with_twitter=True))
これはユーザにアプリを認証させるために使用することができます. 一度認証が終わると, oauth_token
と oauth_verifier
パラメータをリダイレクトされた Callback または Redirect URL (URI) に提供します.
そして, 認証情報を元に, アクセストークンとアクセスシークレットを取得できます.
access_token, access_token_secret = oauth1_user_handler.get_access_token(
"Verifier (oauth_verifier) here"
)
OAuth1UserHandler
を最初期化する必要があるときは, 認証情報を使ってアクセストークンとアクセスシークレットを取得する前に, リクエストトークンとシークレットを跡から設定することができます.
request_token = oauth1_user_handler.request_token["oauth_token"]
request_secret = oauth1_user_handler.request_token["oauth_token_secret"]
new_oauth1_user_handler = tweepy.OAuth1UserHandler(
"API / Consumer Key here", "API / Consumer Secret here",
callback="Callback / Redirect URI / URL here"
)
new_oauth1_user_handler.request_token = {
"oauth_token": "Request Token (oauth_token) here",
"oauth_token_secret": request_secret
}
access_token, access_token_secret = (
new_oauth1_user_handler.get_access_token(
"Verifier (oauth_verifier) here"
)
)
または, 単純に古い OAuth1UserHandler
のインスタンスを利用することができます.
そして, この OAuth1UserHandler
インスタンスを用いて API
を初期化できます:
api = tweepy.API(oauth1_user_handler)
また access_token
と access_token_secret
を用いて新しく OAuth1UserHandler
インスタンスを初期化することで, API
を初期化することもできます:
auth = tweepy.OAuth1UserHandler(
"API / Consumer Key here", "API / Consumer Secret here",
"Access Token here", "Access Token Secret here"
)
api = tweepy.API(auth)
Client
を初期化するには, access_token
と access_token_secret
を直接与えます:
client = tweepy.Client(
consumer_key="API / Consumer Key here",
consumer_secret="API / Consumer Secret here",
access_token="Access Token here",
access_token_secret="Access Token Secret here"
)
PIN-based OAuth
このセクションは Twitter の PIN-based OAuth documentation を補足するものです.
PIN-based OAuth は callback
パラメータとして "oob"
を指定することで利用できます.
import tweepy
oauth1_user_handler = tweepy.OAuth1UserHandler(
"API / Consumer Key here", "API / Consumer Secret here",
callback="oob"
)
このとき, 認証 URL はこれまでと同じ方法で取得できます.
print(oauth1_user_handler.get_authorization_url())
ユーザがこの URL で認証すると, PIN が提供されます. この PIN をユーザから取得することで, 認証に使うことができます.
verifier = input("Input PIN: ")
access_token, access_token_secret = oauth1_user_handler.get_access_token(
verifier
)
これで OAuth1UserHandler
インスタンスや, access_token
と access_token_secret
を使うことができます.
Reference
- class tweepy.OAuth1UserHandler(consumer_key, consumer_secret, access_token=None, access_token_secret=None, callback=None)
OAuth 1.0a User Context authentication handler
バージョン 4.5 で変更: Renamed from
OAuthHandler
- get_authorization_url(signin_with_twitter=False, access_type=None)
Get the authorization URL to redirect the user to
- get_access_token(verifier=None)
After user has authorized the app, get access token and secret with verifier
- set_access_token(key, secret)
バージョン 4.5 で非推奨: Set through initialization instead.
- class tweepy.OAuthHandler(consumer_key, consumer_secret, access_token=None, access_token_secret=None, callback=None)
Alias for
OAuth1UserHandler
バージョン 4.5 で非推奨: Use
OAuth1UserHandler
instead.
- class tweepy.OAuth2AppHandler(consumer_key, consumer_secret)
OAuth 2.0 Bearer Token (App-Only) using API / Consumer key and secret authentication handler
バージョン 4.5 で変更: Renamed from
AppAuthHandler
- class tweepy.AppAuthHandler(consumer_key, consumer_secret)
Alias for
OAuth2AppHandler
バージョン 4.5 で非推奨: Use
OAuth2AppHandler
instead.
- class tweepy.OAuth2BearerHandler(bearer_token)
ベースクラス:
AuthBase
OAuth 2.0 Bearer Token (App-Only) authentication handler
バージョン 4.5 で追加.
- class tweepy.OAuth2UserHandler(*, client_id, redirect_uri, scope, client_secret=None)
ベースクラス:
OAuth2Session
OAuth 2.0 Authorization Code Flow with PKCE (User Context) authentication handler
バージョン 4.5 で追加.
Construct a new OAuth 2 client session.
- パラメータ:
client_id -- Client id obtained during registration
client --
oauthlib.oauth2.Client
to be used. Default is WebApplicationClient which is useful for any hosted application but not mobile or desktop.scope -- List of scopes you wish to request access to
redirect_uri -- Redirect URI you registered as callback
token -- Token dictionary, must include access_token and token_type.
state -- State string used to prevent CSRF. This will be given when creating the authorization url and must be supplied when parsing the authorization response. Can be either a string or a no argument callable.
kwargs -- Arguments to pass to the Session constructor.
- Auto_refresh_url:
Refresh token endpoint URL, must be HTTPS. Supply this if you wish the client to automatically refresh your access tokens.
- Auto_refresh_kwargs:
Extra arguments to pass to the refresh token endpoint.
- Token_updater:
Method with one argument, token, to be used to update your token database on automatic token refresh. If not set a TokenUpdated warning will be raised when a token has been refreshed. This warning will carry the token in its token argument.
- get_authorization_url()
Get the authorization URL to redirect the user to
- fetch_token(authorization_response)
After user has authorized the app, fetch access token with authorization response URL