【问题标题】:How do I construct an oauth api call?如何构建 oauth api 调用?
【发布时间】:2013-03-18 04:30:20
【问题描述】:

我正在尝试为http://api.tumblr.com/v2/user/likes url 上的用户获取 tumblr “喜欢”的帖子。我已经在tumblr注册了我的应用,并授权该应用访问用户的tumblr数据,所以我有oauth_consumer_keyoauth_consumer_secretoauth_tokenoauth_token secret。但是,当我进行 api 调用时,我不确定如何处理这些细节。我正在尝试创建一个仅输出 json 以供进一步处理的命令行脚本,因此 bash (cURL)、Perl 或 python 中的解决方案将是理想的。

【问题讨论】:

    标签: python perl bash oauth tumblr


    【解决方案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'])
    

    完全公开,我保持沉默。

    【讨论】:

      【解决方案2】:

      我找到了一个答案。我最终在 perl 中使用 OAuth::Consumer 连接到 tumblr API。这是迄今为止我发现的最简单的解决方案,而且效果很好。

      【讨论】:

        猜你喜欢
        • 2013-06-09
        • 2014-10-14
        • 2015-11-26
        • 2016-05-19
        • 2012-05-23
        • 2019-11-24
        • 2022-08-14
        • 1970-01-01
        • 2011-02-28
        相关资源
        最近更新 更多