2015-02-07 54 views
0

我試圖建立與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 

我將不勝感激任何幫助。

回答

0

我已經能夠解決我自己的問題。問題是創建一個新的消費者(我有一個用於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