🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

946閲覧

Pythonでtweepyを使ってアクセストークンを取得(デベロッパーアカウント以外)

takahiro00

総合スコア84

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/10/20 05:12

編集2019/10/20 07:56

前提・実現したいこと

Pythonでtweepyを使ってtwitterのアクセストークンを取得したいです。
要するに特定ユーザのACCESS_TOKEN,ACCESS_SECRETが取得できればと思います。

以下のサイトを参考に作成しているのですが、エラーになってしまいます。
リンク内容
ご教授頂ければと思います。

発生している問題・エラーメッセージ

(untitled) $ python twitterTest01.py Traceback (most recent call last): File "twitterTest01.py", line 12, in <module> session['request_token'] = auth.request_token File "/Users/ユーザ名/.conda/envs/untitled/lib/python3.7/site-packages/werkzeug/local.py", line 351, in __setitem__ self._get_current_object()[key] = value File "/Users/ユーザ名/.conda/envs/untitled/lib/python3.7/site-packages/werkzeug/local.py", line 307, in _get_current_object return self.__local() File "/Users/ユーザ名/.conda/envs/untitled/lib/python3.7/site-packages/flask/globals.py", line 38, in _lookup_req_object raise RuntimeError(_request_ctx_err_msg) RuntimeError: Working outside of request context. This typically means that you attempted to use functionality that needed an active HTTP request. Consult the documentation on testing for information about how to avoid this problem.

該当のソースコード

python

1# coding: UTF-8 2 3import tweepy 4from flask import Flask, session, redirect, url_for, request 5 6consumer_key = 'XXXXXXXXXXX' 7consumer_secret = 'XXXXXXXXXXX' 8auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 9 10redirect_url = auth.get_authorization_url() 11 12session['request_token'] = auth.request_token 13session['verifier'] = request.args.get('oauth_verifier') 14 15token = session.get('request_token') 16verifier = session.get('verifier') 17auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 18auth.request_token = token 19auth.get_access_token(verifier) 20access_token = auth.access_token 21access_token_secret = auth.access_token_secret 22auth.set_access_token(access_token, access_token_secret) 23api = tweepy.API(auth)

補足情報(FW/ツールのバージョンなど)

Python 3.7.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mike2mike4

2019/10/20 05:30

え? 他人の認証情報を勝手に取得したいということ? セキュリティ上不可能だけど、違うのなら誤解しないように質問を書き換えてください。
takahiro00

2019/10/20 07:46

いや、自分でログインしたアカウントのです
guest

回答2

0

自己解決

以下のサイトを参考にしたら出来ました。
リンク内容

python

1import tweepy 2import webbrowser 3import urllib 4 5CONSUMER_KEY = "*****" 6CONSUMER_SECRET = "*****" 7 8 9def get_oauth_token(url:str)->str: 10 querys = urllib.parse.urlparse(url).query 11 querys_dict = urllib.parse.parse_qs(querys) 12 return querys_dict["oauth_token"][0] 13 14if __name__ == '__main__': 15 16 auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 17 18 try: 19 redirect_url = auth.get_authorization_url() 20 print ("Redirect URL:",redirect_url) 21 except tweepy.TweepError: 22 print( "Error! Failed to get request token.") 23 24 25 oauth_token = get_oauth_token(redirect_url) 26 print("oauth_token:", oauth_token) 27 auth.request_token['oauth_token'] = oauth_token 28 29 # Please confirm at twitter after login. 30 webbrowser.open(redirect_url) 31 32 verifier = input("You can check Verifier on url parameter. Please input Verifier:") 33 auth.request_token['oauth_token_secret'] = verifier 34 35 try: 36 auth.get_access_token(verifier) 37 except tweepy.TweepError: 38 print('Error! Failed to get access token.') 39 40 print("access token key:",auth.access_token) 41 print("access token secret:",auth.access_token_secret) 42 43 with open("auth_info.text",mode="w") as file: 44 text = "key:{}\nsecret:{}".format(auth.access_token,auth.access_token_secret) 45 file.write(text) 46 47 print("DONE")

投稿2019/10/21 12:03

takahiro00

総合スコア84

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

登録時にwebで表示されるので忘れているのならこちら

APIでキーを取得みたいなのはできないはずです。

投稿2019/10/20 07:54

mike2mike4

総合スコア935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takahiro00

2019/10/20 07:56

分かりづらくてごめんなさい あくまでtweepyでアクセストークンを取得したいのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問