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

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

ただいまの
回答率

88.91%

TwitterAPI error:401の解決方法が知りたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 437

Lang_20

score 4

なぜか2番目のコードを実行すると401エラーが出ます。
キー&トークンは間違いなくtwitterに入ってるので、1番目のコードはエラーなく実行できます。

---試した事---
callback_urlに適当にURLを貼った。
---権限---
イメージ説明

#------------------------------This is 1-------------------------------
twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET)
url = "https://api.twitter.com/1.1/statuses/user_timeline.json" #エンドポイント設定(どこを叩くのか??)

params = {'count': 5}
res = twitter.get(url, params=params)

timelines = json.loads(res.text)
timeline = timelines[1] #最上位が0 #スライスで指定する必要あり
print(timeline['user']['description']) #user内に存在するnameを取る
print(timeline['text'])
#-----------------------------This is 2-------------------------------
twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET)
url = "https://api.twitter.com/1.1/statuses/update.json" #投稿のエンドポイント
params = {'status': 'テストツイート'}
tweet = twitter.post(url, params=params)
print(tweet)
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

https://developer.mozilla.org/ja/docs/Web/HTTP/Status/401

HTTP 401 Unauthorized は、有効な認証資格が不足していることによりリクエストが適用されないことを示すクライアントエラーのレスポンスコードです。

アプリケーションの権限(Permissions)でアクセス権限(Access permission)に、書き込み権限(Read and write)があるかどうか。
トークンを振り出したアカウントからみてアプリのアクセス権が読み取りと書き込みになっているかを確認しましょう。


print(tweet.content)


print(tweet.json()['errors'][0]['code']


の結果を見てみましょう。

そして https://developer.twitter.com/en/docs/basics/response-codesのError Codesの説明を読みます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/24 08:46

    新しく載せた画像のように"Read and write"ともしたのですがダメでした。
    何が原因なのでしょうか。

    キャンセル

  • 2020/07/24 09:07

    "ともした" ということは新しく設定したのですか?
    その場合「トークンを振り出したアカウントからみてアプリのアクセス権」は変わらないはずなのでトークンを取り直してみてください。そもそも「アカウントから見たアプリのアクセス権」は確認しているのでしょうか?

    (考えてみてください。ユーザが最初読み取り専用だと思ってアプリにアクセス権を与えて、アプリ側があとから"Read and write"に権限変更したらトークンの権限も勝手に変わってました、なんてありえないでしょう?)

    キャンセル

  • 2020/07/24 13:35

    トークンを取り直した結果できました。

    助かりましたありがとうございますm(_ _)m

    キャンセル

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

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る