質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Twitter

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

Python

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

Q&A

解決済

1回答

1119閲覧

Jsonを読み込み、tweepyでキーをセットする。

Columba_Karasu

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Twitter

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

Python

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

0グッド

0クリップ

投稿2021/04/17 05:00

前提・実現したいこと

Jsonモジュールとtweepyを使い、読み込みエラーが出た場合はログイン認証させ、アクセストークンとアクセストークンシークレットを保存し、再読み込みしてキーをセットし、アカウント名を出力させる。

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

Traceback (most recent call last): File "login.py", line 52, in <module> me = api.me() tweepy.error.TweepError: Token request failed with code 401, response was '{"err ors":[{"code":32,"message":"Could not authenticate you."}]}'.

下記コードにtry文が三つあり、三つともtryの方向で処理が出来ましたが、me = api.me()でエラーが出ます。

該当のソースコード

Python

1import sys 2import os 3import tweepy 4import pathlib 5import json 6import requests 7 8try: 9 print("try1") 10 #load api key 11 json_open = open('apikeys.json', 'r') 12 json_load = json.load(json_open) 13 14 consumer_key = json_load['api']['api_key'] 15 consumer_secret = json_load['api']['api_key_secret'] 16 17 18 19except Exception: 20 #set api key 21 api_key_input = input("Enter your api key:") 22 api_key_secret_input = input("Enter your api key secret:") 23 path = './apikeys.json' 24 f = open(path, 'w') #Jsonファイルを生成。 25 f.write('{\n') 26 f.write(' "api":{\n') 27 f.write(f' "api_key":"{api_key_input}",\n') 28 f.write(f' "api_key_secret":"{api_key_secret_input}"\n') 29 f.write(' }\n') 30 f.write('}') 31 32 33try: 34 print("try2") 35 json_open = open('settings.json', 'r') 36 json_load = json.load(json_open) 37 38 access_token = json_load['auth']['access_token'] 39 access_token_secret = json_load['auth']['access_token_secret'] 40 41 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 42 auth.set_access_token(access_token,access_token_secret) 43 44 api = tweepy.API( 45 auth, 46 wait_on_rate_limit=True, 47 wait_on_rate_limit_notify=True 48 ) 49 50 print("api") 51 52 me = api.me() 53 print(f'ログインが完了しました。:{me.user_name}') 54 55except: 56 # get access token from the user and redirect to auth URL 57 auth_url = auth.get_authorization_url() 58 print('Authorization URL:' + auth_url) 59 60 # ask user to verify the PIN generated in broswer 61 verifier = input('PIN:').strip() 62 auth.get_access_token(verifier) 63 64 path = './settings.json' 65 f = open(path, 'w') #Jsonファイルを生成。 66 f.write('{\n') 67 f.write(' "auth":{\n') 68 f.write(f' "access_token":"{auth.access_token}",\n') 69 f.write(f' "access_token_secret":"{auth.access_token_secret}"\n') 70 f.write(' }\n') 71 f.write('}') 72 73try: 74 print("try3") 75 json_open = open('settings.json', 'r') 76 json_load = json.load(json_open) 77 78 access_token = json_load['authtoken']['access_token'] 79 access_token_secret = json_load['authtoken']['access_token_secret'] 80 81 print(f"{access_token}\n{access_token_secret}") 82except Exception: 83 pass 84 85# authenticate and retrieve user name 86auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 87auth.set_access_token(access_token,access_token_secret) 88 89api = tweepy.API( 90 auth, 91 wait_on_rate_limit=True, 92 wait_on_rate_limit_notify=True 93) 94 95print("api") 96 97me = api.me() 98print(f'ログインが完了しました。:{me.user_name}') 99

試したこと

Jsonファイルの修正やtry,except文の見直し。

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

Python 3.8.2
Windows 10 Home
Visual Studio Code

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

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

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

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

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

guest

回答1

0

自己解決

1から作り直したら上手く動作しました。

投稿2021/04/17 07:43

Columba_Karasu

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問