OAuth的握手复制错误

问题描述:

我试图建立与Copy的API REST的PoC但我有一个问题,当我试图让访问令牌:OAuth的握手复制错误

消息: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 

我将不胜感激任何帮助。

我已经能够解决我自己的问题。问题是创建一个新的消费者(我有一个用于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() 
+0

我有同样的问题。这里是我的代码\t \t \t 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 \” 的”, \t \t Constants.COPY_CONSUMER_KEY, \t \t oauthToken,Constants.COPY_SECRET, \t \t tokenVerifier , \t \t uuid, \t \t String.valueOf(Calendar.getInstance()。getTimeInMillis())); – 2015-03-04 15:44:14

+0

我的代码有什么问题,我正在使用相同的使用者密钥,如果我更改它,它会给出错误无效密钥。我的签名是秘密和验证者的混合物 – 2015-03-04 15:45:00

+0

分享你的格式化的代码,我会尽力帮助你。 – mendrugory 2015-03-04 16:09:09