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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Twitter

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

Python

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

Q&A

1回答

1687閲覧

TwitterAPI 403エラーについて

vio

総合スコア15

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Twitter

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

Python

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

0グッド

0クリップ

投稿2021/12/15 20:24

twitterAPIに関する質問です。

Colabを使用して、
自分のアカウントのツイートを取得しようと思っています。

下記コードを入力しているのですが、
返ってくる値が「403」でエラーが発生してしまいます(キー情報などは仮のものです)。

Python

1from requests_oauthlib import OAuth1Session

Python

1CONSUMER_KEY = 'XXXX' 2CONSUMER_SECRET = 'XXXX' 3ACCESS_TOKEN = 'XXXX' 4ACCESS_TOKEN_SECRET = 'XXXX' 5 6twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

Python

1url = 'https://api.twitter.com/1.1/statuses/user_timeline.json' 2params = {'count':1} 3res = twitter.get(url, params=params) 4res.status_code

調べたところ、403エラーが起こる要因の一つとして
「ツイッター側のアプリ設定でCallback URLsの設定が間違っている」可能性があるのですが、
「User authentication settings」の
「Callback URI / Redirect URL」に何のURLを入れればいいか分かりません…。

適当なURL(twitterのURL)を入れてみても、403エラーのまま変わりませんでした。
また解説サイトを見ても情報が古いのか、403エラーに関する詳しい情報は出てきませんでした。

より細かいエラー内容を取得する方法、
または解決方法をご存知の方がいらっしゃいましたら、ご教示ください。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

より細かいエラー内容を取得する方法、

エラーの中身はhttpアクセスの本文

python

1print(res.text)

で見ましょう。(文字列化できないものならprint(res.content)でバイナリ表示)


または解決方法

paramsが間違ってます。
https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline
user_idもscreen_nameも、どちらも指定しないなら、いったい何を取得したかったかのか? という話になります。

(別の原因もあるかもしれません)

(訂正) user_idもscreen_nameもない場合、トークンを認証したアカウントのタイムラインがでてくるそうです。


「User authentication settings」の
「Callback URI / Redirect URL」に何のURLを入れればいいか分かりません…。

「分からない」ならそれは使えませんし、まだ使う必要がない段階だと思います。
OAuth 1.0aを使用するチェックを外しましょう。

投稿2021/12/15 23:44

編集2021/12/16 12:30
quickquip

総合スコア11029

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

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

vio

2021/12/16 08:31

quickquip様 ご回答ありがとうございます! ``print(res.text)`` こちらで内容を確認することができました! 早速試してみたところ、下記のようなエラーメッセージが表示されました。 ``` You currently have Essential access which includes access to Twitter API v2 endpoints only. If you need access to this endpoint, you’ll need to apply for Elevated access via the Developer Portal. You can learn more here: https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve ``` おそらく現在のアクセスレベルでは取得できない内容なので、 アクセスレベルを現在の「Essential」から「Elevated」へ上げる必要があるのかなと思います。 無料で昇格できるようなので、開発者ポータル内で追加アクセスの申請を行いました。 アカウントのアクセスレベルについて https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api --- >user_idもscreen_nameも、どちらも指定しないなら、いったい何を取得したかったかのか? という話になります。 こちらですが、何も指定を行わない場合は API取得元の自分のアカウントの情報を引っ張ってくるようです。 念の為、下記のように修正いたしました。 ```Python params = { 'count':1, 'screen_name' : 'xxx' # twitterアカウント名 } ``` --- >「分からない」ならそれは使えませんし、まだ使う必要がない段階だと思います。 >Callback URI / Redirect URLを空にしてから(大事)OAuth 1.0aを使用するチェックを外しましょう。 「Callback URI / Redirect URL」が必須入力欄になっており空にできなかったので、 現在はtwitterのURLをそのまま記入しております。 「OAuth 1.0a」のチェックは外しました! 申請が通り次第、追加の情報を記載いたします。 それぞれの質問に対し一つずつ丁寧にご回答いただき、誠にありがとうございました!
quickquip

2021/12/16 12:28

> こちらですが、何も指定を行わない場合は > API取得元の自分のアカウントの情報を引っ張ってくるようです。 仕様書外の挙動! なるほどです。 > アクセスレベル すみません。v2 API以降の仕様のことは、私はほとんどわかりません。 (v1.1のendpointに影響があるのかも含めて) > 「Callback URI / Redirect URL」が必須入力欄になっており空にできなかったので、 > 現在はtwitterのURLをそのまま記入しております。 > > 「OAuth 1.0a」のチェックは外しました! 現UIだとそうなってますね。失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問