15

Twythonを使用して Python にツイートを送信させようとしていますが、何らかの理由で私が試みているすべてが機能していません。

Twython の READMEに従っていますが、まだ目的を達成できません。

以下は私の最近の試みたコードです:

from twython import Twython, TwythonError

APP_KEY = "KEYHERE"
APP_SECRET = "SECRETHERE"

twitter = Twython(APP_KEY, APP_SECRET)
auth = twitter.get_authentication_tokens()

OAUTH_TOKEN = auth['oauth_token']
OAUTH_TOKEN_SECRET = auth['oauth_token_secret']

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

try:
    twitter.update_status(status='See how easy this was?')
except TwythonError as e:
    print e

上記のコードを実行すると、次のトレースバック エラーが発生します。

Twitter API returned a 401 (Unauthorized), Invalid or expired token

私が間違っていることを誰かが知っていますか?さらに重要なことに、これを修正するにはどうすればよいですか?

バウンティに十分なポイントがありませんが、助けていただければ幸いです。

前もって感謝します

編集

Traceback (most recent call last):
  File "C:\testtweet.py", line 20, in <module>
    final_step = twitter.get_authorized_tokens(oauth_verifier)
  File "C:\Python27\lib\site-packages\twython\api.py", line 313, in get_authorized_tokens
    raise TwythonError('Unable to decode authorized tokens.')
TwythonError: Unable to decode authorized tokens.

上記は、@justhalf によって提供されたコードから受け取ったトレースバックです。

ありがとう

4

5 に答える 5

41

Twython 実際に表示される方法とは対照的に、投稿を更新するはるかに簡単な方法があります。ただし、API コンソール スペースでさらに作業が必要になるので、始めましょう。

  1. まず、アプリのページに移動する必要があります。現在使用しているアプリケーションを選択したら、表示されたページを見てください。デフォルトでは、[詳細] タブが表示されます。 ここに画像の説明を入力

  2. 本来あるべき場所にいるので、上記のように [詳細]タブのすぐ隣にある[設定] タブをクリックします。

  3. その後、これが表示されるまで下にスクロールします。 ここに画像の説明を入力

  4. 上記のオプションをクリックします。オプションを選択したら、「Update this twitter's application settings 」という青いボタンが表示されるまで下にスクロールします。

  5. 次に、[詳細] タブに戻ります。一番下に移動して、必要なトークンを生成します。機能させるには、ボタンを数回クリックする必要がある場合があることに注意してください (また、トークンが使用されている場合は、アクセス レベルが読み取り、書き込み、およびダイレクト メッセージであることを確認してください)。生成されます): ここに画像の説明を入力

  6. これで、Twitter アカウントに接続して投稿するために必要なすべてが揃いました。Consumer keyConsumer SecretAccess tokenと がありますAccess token secret。必要なものはすべて揃っています。

さて、コードエディタに向かい、次のボイラープレートコードを書きます (これらのキーは機能しません。アプリケーションを削除したばかりなので、ここではハックしません:P 長さの指標として単にそれらを与えました)あなたが期待するべきキーの):

from twython import Twython

APP_KEY = ''  # Customer Key here
APP_SECRET = ''  # Customer secret here
OAUTH_TOKEN = '1936951807-z5bBNING8P1TU2onWvJh5dh8hoYlYAmNOaAx2OX'  # Access Token here
OAUTH_TOKEN_SECRET = 'QWJEZ7ridSeZGdxJELSBk7mupCpMA9q9sLCou5ywg'  # Access Token Secret here

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

twitter.update_status(status="Hello from Python! :D")

この後、Twitter を確認すると、"Hello from Python! :D" という新しいツイートが表示されるはずです。

于 2013-10-05T10:15:43.073 に答える
0

コードが返される理由は、呼び出し後にoauth_verifierTwitter API returned a 401 (Unauthorized), Invalid or expired tokenが必要な ためですget_authentication_tokens()oauth_verifier

from twython import Twython, TwythonError

twitter = Twython(APP_KEY, APP_SECRET)

auth = twitter.get_authorization_tokens(callback_url='http://google.com')
oauth_token = auth['oauth_token']
oauth_token_secret = auth['oauth_token_secret']
print auth
print auth['auth_url']

auth['auth_url']は、次のような応答を出力します。

https://api.twitter.com/oauth/authenticate?oauth_token=xxxxxxxxx

この URL を参照して、アプリを承認します

ここに画像の説明を入力

アプリが承認されると、クライアントがcallback_url

callback_urlが追加されますoauth_verifier

何かのようなものhttp://google.com/?oauth_verifier=xxxxxx&oauth_token=xxxxxx

使用している Web フレームワークによっては、新しいTwythonoauth_verifier インスタンスを作成するための応答を取得する必要があります

twitter = Twython(APP_KEY, APP_SECRET, oauth_token, oauth_token_secret)
final_tokens = twitter.get_authorized_tokens(oauth_verifier)

print final_tokens

# these are the keys you will use to make calls on the users behalf from here on forward
f_oauth_token = final_tokens['oauth_token']
f_oauth_token_secret = final_tokens['oauth_token_secret']

Twitter ステータスの更新:

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN=f_oauth_token, OAUTH_TOKEN_SECRET=f_oauth_token_secret)

try:
    twitter.update_status(status='See how easy this was?')
except TwythonError as e:
    print e

@Games Brainiac で言及されているように、Twitter のアプリケーション設定を更新します。

于 2013-10-09T09:37:08.127 に答える