我一直在使用netflix api和python oauth2庫的受保護身份驗證。但是,在簽名請求方面,我沒有問題,允許用戶使用他們的netflix帳戶登錄,當我嘗試獲取access_token時遇到了一些問題,我知道有些情況下OAuth不返回verifier
,即使它應該從netflix的授權頁面重定向後,我會得到類似如下的結果:http://127.0.0.1:5000/authorized_user?oauth_token=some_token&oauth_verifier=
驗證器爲空。oauth2庫和Netflix API返回無訪問令牌
我是圖書館的新手,很不明白verfier
不存在時該怎麼辦。因爲我成功將用戶重定向到netflix登錄/授權頁面。我認爲我的錯誤來自我完全不瞭解的這一步驟。以下是我嘗試的簡化(shell)版本。我會很高興向正確的方向推進,我閱讀netflix文檔並閱讀庫文檔,但無法弄清楚要做什麼。
# Get request token (temporary)
resp, content = client.request(REQUEST_TOKEN_URL, "GET")
if resp['status'] != '200':
raise Exception("Invalid response %s." % resp['status'])
request_token = dict(parse_qsl(content))
print 'Request token'
print ' --> oauth_token = %s' % request_token['oauth_token']
print ' --> oauth_token_secret = %s' % request_token['oauth_token_secret']
print ' --> login_url = %s' % request_token['login_url']
# Redirect to netflix for user authorization
print 'Go to the following link: '
login_url = request_token['login_url']
access_token_url = '%s&oauth_consumer_key=%s' % (login_url, CONSUMER_KEY)
accepted = 'n'
while accepted.lower() == 'n':
accepted = raw_input('Have you authorized me? (y/n) ')
resp, content = client.request(access_token_url, "POST")
token = oauth.Token(request_token['oauth_token'],
request_token['oauth_token_secret'])
client = oauth.Client(consumer, token)
resp, content = client.request(access_token_url, "POST")
access_token = dict(parse_qsl(content))
print "Access Token:"
print " - oauth_token = %s" % access_token['oauth_token']
print " - oauth_token_secret = %s" % access_token['oauth_token_secret']
非常感謝 - 我遵循了您的建議,並且遇到了一個問題,netflix要求您提交帶有authorize_url的'oauth_consumer_key'。由於這是他們的要求,在使用你的庫時,我從服務器得到一個400響應,說' oauth_consumer_key缺少 '。另外,我想說你的庫很好用,並且消除了其他庫所暴露的複雜性。讓我知道任何建議來解決這個問題。再次感謝。 –
lv10
對於authorize_url,你可以將任何你想要的參數傳遞給函數調用,這些參數將被添加到查詢字符串中,所以也許這樣會起作用:'netflix.get_authorize_url(request_token,** {'oauth_consumer_key':'123 ',...})'。希望能幫助和謝謝你的客氣話! – maxcountryman
再次感謝。我設法現在從shell中開始工作。但是,當我從Web框架(Flask)執行它時,我一直得到以下錯誤:引發''KeyError(PROCESS_TOKEN_ERROR.format(key = bad_key,raw = r.content))''。我不太瞭解keyError的含義? – lv10