def send_to_twitter(): msg = "I am a message that will be sent to Twitter" password_manager = urllib.request.HTTPPasswordMgr() password_manager.add_password("Twitter API", "http://twitter.com/statuses", "username", "password") http_handler = urllib.request.HTTPBasicAuthHandler(password_manager) page_opener = urllib.request.build_opener(http_handler) urllib.request.install_opener(page_opener) params = urllib.parse.urlencode( {'status': msg} ) resp = urllib.request.urlopen("http://twitter.com/statuses/update.json", params) resp.read()
当我通过IDLE执行此代码时,我得到一个错误;
urllib.error.HTTPError: HTTP Error 401: Unauthorized
我的代码可能有什么问题?
答案 0 :(得分:4)
Twitter no longer supports HTTP Authentication。你应该使用oauth。
如果你想从python做推特,那么tweepy似乎是一个很好的图书馆:它是最新的,支持誓言并且看起来非常完整。
答案 1 :(得分:1)
您正在使用旧的HTTP身份验证方法。使用OAuth升级。
转到以下链接设置您的Twitter应用程序:twitter.com/apps/new (提示:您可以将URL设置为127.0.0.1以进行测试,并记住将应用程序设置为浏览器并指定回调URL)
你可以从那里继续。