所以我有一个来自tumblr的消费者密钥和消费者秘密,下面的代码允许我进行Oauth身份验证,但是我不知道如何通过python和/或pytumblr实际登录到我自己的tumblr。在成功使用Oauth之后,我无法发送到tumblr。我应该通过API登录到tumblr,还是通过python的http定期登录然后使用API?据我所知,旧的tumblr API自2012年9月以来就没有工作过,所以python tumblr athere不再工作了。相反,我使用的是here中的pytumblr。这是我的代码:import urlparseimport oauth2import pytumblrREQUEST_TOKEN_URL = 'http://www.tumblr.com/oauth/request_token'AUTHORIZATION_URL = 'http://www.tumblr.com/oauth/authorize'ACCESS_TOKEN_URL = 'http://www.tumblr.com/oauth/access_token'CONSUMER_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'def Test(): consumer = oauth2.Consumer(CONSUMER_KEY, CONSUMER_SECRET) client = oauth2.Client(consumer) resp, content = client.request(REQUEST_TOKEN_URL, "GET") request_token = dict(urlparse.parse_qsl(content)) oauthToken = request_token['oauth_token'] oauthSecret = request_token['oauth_token_secret'] print "Request Token:\n" print " - oauth_token = " + oauthToken + "\n" print " - oauth_token_secret = " + oauthSecret + "\n" pytumblrClient = pytumblr.TumblrRestClient(CONSUMER_KEY, CONSUMER_SECRET, oauthToken, oauthSecret) response = pytumblrClient.create_text("mytumblr.tumblr.com", body="test") print response如你所见,我的tumblr没有密码被发送到任何地方,也没有任何文档告诉我在哪里发送我的密码。运行代码后,我得到一个未经授权的响应:{u'meta': {u'status': 401, u'msg': u'Not Authorized'}, u'response': []}有没有办法使用tumblr API发布到我自己的tumblr? 最佳答案 tl;dr此解决方案指示用户检索由interactive_console.py生成的oauth令牌,并对令牌值进行硬编码,而不是以编程方式检索它们。注意:我确信这个解决方法在某种程度上违反了oauth的整个原则,但是我不明白为什么原来的方法不起作用。非常感谢比我更了解-1的人的意见。为什么这个解决方案不理想2。我怎样才能修复原来的方法,这样我就不用这样做了解决方法:从API console page获取“消费者密钥”和“消费者秘密”运行interactive_console.py并遵循说明如果一切顺利,您的oauth令牌现在都存储在~/.tumblr(pytumblr README)中,您应该会看到一个交互式python控制台Python 2.7.11 (default, May 19 2016, 13:11:38)[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwinType "help", "copyright", "credits" or "license" for more information.(InteractiveConsole)>>>退出Python控制台,因为您不需要它(类型“ExtId()))从~/.tumblr检索oauth令牌硬编码您的oauth令牌到您正在使用的任何东西中,始终返回401“未授权”错误。对我来说,这看起来是这样的:(注意>)import urlparseimport oauth2import pytumblrREQUEST_TOKEN_URL = 'http://www.tumblr.com/oauth/request_token'AUTHORIZATION_URL = 'http://www.tumblr.com/oauth/authorize'ACCESS_TOKEN_URL = 'http://www.tumblr.com/oauth/access_token'CONSUMER_KEY = '<<REDACTED>>'CONSUMER_SECRET = '<<REDACTED>>'# don't need this b/c we're not retrieving oauth tokens programmatically anymore'''consumer = oauth2.Consumer(CONSUMER_KEY, CONSUMER_SECRET)client = oauth2.Client(consumer)resp, content = client.request(REQUEST_TOKEN_URL, "GET")request_token = dict(urlparse.parse_qsl(content))oauthToken = request_token['oauth_token']oauthSecret = request_token['oauth_token_secret']'''# original API call with oauth tokens retrieved programmatically#pytumblrClient = pytumblr.TumblrRestClient(CONSUMER_KEY, CONSUMER_SECRET, oauthToken, oauthSecret)# NEW API call with oauth tokens hard-codedpytumblrClient = pytumblr.TumblrRestClient(CONSUMER_KEY, CONSUMER_SECRET,'<<HARD_CODED_OAUTH_TOKEN>>', '<<HARD_CODED_OAUTH_TOKEN_SECRET>>')response = pytumblrClient.create_text("selfiesindumbo", body="TESTING VIA API")print response希望这能帮助别人!
10-07 13:53