Публиковать твиты от имени пользователей, которые аутентифицировали мое приложение для публикации твитов?

У меня есть приложение, используя это приложение, в котором пользователь может sign-up via twitter, и я установил разрешение Чтение, запись и прямые сообщения. Поэтому, когда пользователь регистрируется в моем проекте, он разрешает мне публиковать от его имени. Также при регистрации я получил его oauth-token and oauth-token secret.

Но я не знаю, как я могу опубликовать твит от имени этого пользователя. Я пытаюсь отправить форму по адресу https://api.twitter.com/1.1/statuses/update.json с такими параметрами, как статус, мой ключ и секрет приложения, пользовательский oauth_token и секрет, но в ответ я всегда получаю это

{"errors":[{"message":"Bad Authentication data","code":215}]}

Я использую python-social-auth для регистрации через твиттер.

Любая помощь будет оценена по достоинству. Спасибо


person Inforian    schedule 31.03.2014    source источник
comment
Убедитесь, что вы делаете запрос к API через https://, а не через http://. Кроме того, это может быть полезно: dev.twitter.com/discussions/15244   -  person xyres    schedule 31.03.2014


Ответы (1)


Вам нужно указать пользователя access_token в своем запросе, так Twitter узнает, кто является текущим аутентифицированным пользователем. С python-social-auth вы можете сделать:

# given a user instance (and assuming Django ORM)
social = user.social_auth.get(provider='twitter')
backend = social.get_backend()
form_data = {
    'status': 'The new twitter status goes here'
}
response = backend.get_json(
    'https://api.twitter.com/1.1/statuses/update.json', 
    method='POST',
    auth=backend.oauth_auth(social.extra_data['access_token']),
    data=form_data
)
person omab    schedule 31.03.2014
comment
Есть ли какой-либо API, который позволит мне опубликовать статус, просто взяв 3 параметра, например: api.PostStatus(text, screen_name, password)? - person sumanth232; 20.03.2015