Pregunta

He estado buscando una manera de actualizar mi estado de Twitter desde un cliente Python. Como este cliente sólo necesita acceso a una cuenta de Twitter, debería ser posible hacer esto con un oauth_token previamente generada y secreto, de acuerdo con la http://dev.twitter.com/pages/oauth_single_token

Sin embargo, el código de ejemplo no parece trabajo, yo estoy poniendo 'no se pudo autenticar' o 'firma incorrecta' ..

Como hay un montón de diferentes biblioteca de Python-twitter por ahí (y no todos ellos están al día) Te lo agradecería si alguien me podría apuntar una biblioteca que está actualmente trabajando para peticiones POST, o post algunos ejemplos de código!

Actualización: He intentado la solución de Pavel, y funciona siempre y cuando el nuevo mensaje es sólo una palabra larga, pero tan pronto como se contiene espacios, me sale este error:

status = api.PostUpdate('hello world')
Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\Python26\lib\site-packages\python_twitter\twitter.py", line 2459, in PostUpdate
        self._CheckForTwitterError(data)
      File "C:\Python26\lib\site-packages\python_twitter\twitter.py", line 3394, in _CheckForTwitterErro
    r
        raise TwitterError(data['error'])
    python_twitter.twitter.TwitterError: Incorrect signature

Sin embargo, si la actualización es sólo una palabra, funciona:

status = api.PostUpdate('helloworld')
{'status': 'helloworld'}

¿Alguna idea de por qué esto podría estar sucediendo?

Muchas gracias de antemano,

Hoff

¿Fue útil?

Solución 2

he sido capaz de resolver este problema utilizando otra biblioteca - por lo que voy a publicar mi solución aquí por referencia:

import tweepy
# http://dev.twitter.com/apps/myappid
CONSUMER_KEY = 'my consumer key'
CONSUMER_SECRET = 'my consumer secret'
# http://dev.twitter.com/apps/myappid/my_token
ACCESS_TOKEN_KEY= 'my access token key'
ACCESS_TOKEN_SECRET= 'my access token secret'

def tweet(status):
    '''
    updates the status of my twitter account
    requires tweepy (https://github.com/joshthecoder/tweepy)
    '''
    if len(status) > 140:
        raise Exception('status message is too long!')
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET)
    api = tweepy.API(auth)
    result = api.update_status(status)
    return result

Otros consejos

Quizás se encuentre interesado en este http://code.google.com/p/python -Twitter /

Por desgracia no existen los documentos para ser justos y 'liberación' última fue en 2009.

He utilizado el código de Hg:

wget http://python-twitter.googlecode.com/hg/get_access_token.py
wget http://python-twitter.googlecode.com/hg/twitter.py

Después de proceso de registro aplicación (largo) ( http://dev.twitter.com/pages/ auth # registro ) que debe tener la llave del consumidor y secreto. Son únicos para una aplicación.

Lo siguiente que necesita para conectar la aplicación con su cuenta, editar el get_access_token.py acuerdo con las instrucciones en el origen (sic!) Y correr. Usted debe tener ahora la clave de acceso de emergencia Twitter y secreto.

>>> import twitter
>>> api = twitter.Api(consumer_key='consumer_key',
            consumer_secret='consumer_secret', access_token_key='access_token',
            access_token_secret='access_token_secret')
>>> status = api.PostUpdate('I love python-twitter!')
>>> print status.text
I love python-twitter!

Y funciona para mí http://twitter.com/#!/pawelprazak/status / 16504039403425792 (no estoy seguro si es visible para todos)

Dicho esto debo añadir que no me gusta el código, por lo que si me va a usarlo me reescribir la misma.

EDIT:. He hecho el ejemplo más claro

La localización más reciente para la documentación de Python-Twitter es ahora en GitHub (que la página del código de puntos de Google que al.)

Es necesario ahora ya no utilizar la herramienta de línea de comandos que viene con python-twitter para obtener el conjunto completo de tokens de acceso y secretos, https://dev.twitter.com le permitirá a solicitar al registrar su aplicación.

Una vez que tenga los cuatro valores de credenciales diferentes, la primera cosa que quiere hacer es prueba de que al hacer una prueba de API:

api = twitter.Api (consumer_key = 'consumer_key', consumer_secret = 'consumer_secret', access_token_key = 'señal_acceso', access_token_secret = 'access_token_secret')

api.VerifyCredentials de impresión ()

Esto le mostrará si sus credenciales están trabajando o no. Si se produce un error el siguiente paso es pasar en debugHTTP = True a la llamada a la API () -. Esto hará que toda la conversación HTTP a imprimir para que pueda ver el mensaje de error Twitter

Una vez que las credenciales están trabajando, entonces puede intentar llamar PostUpdate () o incluso sólo getTimeline ()

He codificado alguna cosa relacionada con esta cuestión.

import tweepy
consumer_key = Your_consumer_key
consumer_secret = Your_consumer_secret
access_token = Your_access_token
access_token_secret = Your_access_token_secret_key

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
single_tweet = 'hello world'
api.update_status(single_tweet)
print "successfully Updated"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top