代表已对我的应用进行身份验证以发布推文的用户发推文?

时间:2014-03-31 05:07:36

标签: python django twitter python-social-auth

我有一个应用程序,使用此应用程序,用户可以sign-up via twitter我已设置读取,写入和直接消息的权限,因此当用户注册我的项目时他授权我,我可以代表他发帖。在注册期间,我也得到了他的auth-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通过twitter注册。

任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:4)

您需要使用您的请求指定用户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
)