【问题标题】:OAuth Handshake Copy ErrorOAuth 握手复制错误
【发布时间】:2015-02-08 22:10:05
【问题描述】:

我正在尝试使用Copy 的 API REST 构建 PoC,但是当我尝试获取 ACCESS TOKEN 时遇到问题:

消息:oauth_problem=signature_invalid&debug_sbs=GET&https%3A%2F%2Fapi.copy.com%...

@app.route('/get_access_token')
def get_access_token():
    print "Get Access Token"
    oauth_verifier = request.args['oauth_verifier']
    oauth_token = request.args['oauth_token']
    print oauth_token + " & " + oauth_verifier

    # Create your consumer with the proper key/secret.
    consumer = oauth.Consumer(key=CONSUMER_KEY, secret=CONSUMER_SECRET)
    print "Consumer: ", consumer
    client = oauth.Client(consumer)
    url = access_url + "?oauth_verifier=%s&oauth_token=%s" % (oauth_verifier, oauth_token)
    print url
    resp, content = client.request(url, "GET")
    print "Resp: ", resp
    print "Content: ", content

    return content

我将不胜感激。

【问题讨论】:

    标签: python oauth copy


    【解决方案1】:

    我已经能够解决我自己的问题。问题是创建了一个新的消费者(我有一个用于 oauth 握手的第一步)而不是使用库提供的 oauth.Token(我将 oauth_verifier 和 oauth_token 放入了解决方法)

    解决办法:

    @app.route('/get_access_token')
    def get_access_token():
        print "Get Access Token"
        try:
            oauth_verifier = request.args['oauth_verifier']
            oauth_token = request.args['oauth_token']
            print oauth_token + " & " + oauth_verifier
    
            token = oauth.Token(oauth_token, request_token_secret) # request_token_secret is global
            token.set_verifier(oauth_verifier)
            client = oauth.Client(consumer, token) #consumer is global
    
            url = "https://api.copy.com/oauth/access"
            resp, content = client.request(url, "GET")
            print "Resp: ", resp
            print "Content: ", content
            return content
    
        except Exception as e:
            return e.message()
    

    【讨论】:

    • 我遇到了同样的问题。这是我的代码 String authorization = String.format("OAuth oauth_version=\"1.0\", oauth_signature_method=\"PLAINTEXT\", oauth_consumer_key=\"%s\", oauth_token=\"%s\", oauth_signature=\ "%s&%s\", oauth_nonce=\"%s\", oauth_timestamp=\"%s\"", Constants.COPY_CONSUMER_KEY, oauthToken, Constants.COPY_SECRET, tokenVerifier, uuid, String.valueOf(Calendar.getInstance() .getTimeInMillis()));
    • 我的代码有什么问题,我使用相同的消费者密钥,如果我更改它,它会给出错误无效密钥。我的签名是秘密和验证者的混合体
    • 分享您的格式化代码,我会尽力帮助您。
    • 你检查我的问题了吗?
    猜你喜欢
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2011-05-21
    • 2017-02-11
    • 2014-08-04
    • 1970-01-01
    相关资源
    最近更新 更多