我一直在使用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