2013-03-27 79 views
2

我想爲http://api.tumblr.com/v2/user/likes網址的用戶獲取tumblr「喜歡的」帖子。我已經使用tumblr註冊了我的應用,並授權應用訪問用戶的tumblr數據,因此我有oauth_consumer_key, oauth_consumer_secretoauth_tokenoauth_token secret。但是,我不確定在進行api調用時如何處理這些細節。我試圖創建一個命令行腳本,只輸出json進行進一步處理,所以bash(cURL),Perl或python中的解決方案將是理想的。如何構建一個oauth api調用?

回答

0

我有點找到了答案。我最終使用perl中的OAuth :: Consumer連接到tumblr API。這是迄今爲止我發現的最簡單的解決方案,它的工作原理。

1

那麼如果你不介意使用Python,我可以推薦rauth。沒有Tumblr示例,但OAuth 1.0/a和OAuth 2.0都有real world, working examples。該API旨在簡單直接。我不確定你有什麼其他要求,但也許值得一試?

這裏的工作的例子,如果你有興趣去了:

from rauth import OAuth1Service 

import re 
import webbrowser 

# Get a real consumer key & secret from http://www.tumblr.com/oauth/apps 
tumblr = OAuth1Service(
    consumer_key='gKRR414Bc2teq0ukznfGVUmb41EN3o0Nu6jctJ3dYx16jiiCsb', 
    consumer_secret='DcKJMlhbCHM8iBDmHudA9uzyJWIFaSTbDFd7rOoDXjSIKgMYcE', 
    name='tumblr', 
    request_token_url='http://www.tumblr.com/oauth/request_token', 
    access_token_url='http://www.tumblr.com/oauth/access_token', 
    authorize_url='http://www.tumblr.com/oauth/authorize', 
    base_url='https://api.tumblr.com/v2/') 

request_token, request_token_secret = tumblr.get_request_token() 

authorize_url = tumblr.get_authorize_url(request_token) 

print 'Visit this URL in your browser: ' + authorize_url 
webbrowser.open(authorize_url) 
authed_url = raw_input('Copy URL from your browser\'s address bar: ') 
verifier = re.search('\oauth_verifier=([^#]*)', authed_url).group(1) 

session = tumblr.get_auth_session(request_token, 
            request_token_secret, 
            method='POST', 
            data={'oauth_verifier': verifier}) 

user = session.get('user/info').json()['response']['user'] 

print 'Currently logged in as: {name}'.format(name=user['name']) 

充分披露,我保持rauth。