2014-04-07 48 views
1

我想在我的Django應用程序中的Rdio API上進行授權調用。我一直在看下面的教程到目前爲止得到它成立:Django中的Oauth 1.0a

http://www.rdio.com/developers/docs/web-service/oauth/ref-oauth1-overview

在頁面底部的代碼工作正常,我:我可以請求令牌,使用授權用戶PIN碼,然後使用新的訪問令牌撥打電話。

但是,我想執行回調,以便用戶可以登錄並返回到我的網站,以便我可以使用其帳戶進行授權請求。我現在有一個網頁的鏈接批准的應用程序,從哪裏得到該鏈接的功能,像這樣:

def get_auth_url(): 
    client = oauth.Client(consumer) 
    response, content = client.request('http://api.rdio.com/oauth/request_token', 'POST', urllib.urlencode({'oauth_callback': 'http://localhost:8080/my_page/'})) 
    parsed_content = dict(cgi.parse_qsl(content)) 
    request_token = oauth.Token(parsed_content['oauth_token'], parsed_content['oauth_token_secret']) 
    sURL = '%s?oauth_token=%s' % (parsed_content['login_url'], parsed_content['oauth_token']) 
    return sURL 

這是正常的,而當我點擊這個鏈接,我去一個網頁,要求授權我考慮這個應用程序。但是,我需要從我的用戶剛授權的請求令牌中獲取訪問令牌。來自授權頁面的回調給出了我的oauth_verifieroauth_token參數,但構造請求令牌需要oauth_tokenoauth_token_secret。我在第一次電話會議上有祕密,但在第二次電話會議中無法再次獲得,祕書說我不應該將祕密存放在任何可以訪問的地方,也不應該通過請求傳輸。由於這些是兩個不同的請求,我無法考慮在哪裏存儲持久性請求令牌。如何獲得第二個請求上的oauth_token_secret,以便我可以獲取訪問令牌?

回答

1

您需要暫時將請求令牌存儲在服務器上,以便您可以訪問令牌請求。此行:

請求令牌密鑰必須包含在簽名中,但不能通過線路。

指的是祕密用於生成簽名但不包含在請求中的事實本身。

爲了節省您的時間和精力,我建議您使用Django Social Auth。它已經supports Rdio