我一直在使用netflix api和python oauth2库的受保护身份验证。我提出签名请求没有问题,但是,允许用户使用他们的netflix帐户登录,当我尝试获取access_token时遇到一些问题,我知道OAuth没有返回{{}的情况1}},即使它应该是,但是在从netflix的授权页面重定向后,我得到类似这样的内容:verifier
,验证程序为空。
我是图书馆的新手,并且在http://127.0.0.1:5000/authorized_user?oauth_token=some_token&oauth_verifier=
不存在时完全不明白该怎么做。因为,我成功地将用户重定向到netflix登录/授权页面。我认为我的错误来自这个我不完全理解的步骤。下面是我正在尝试的简化(shell)版本。我希望推动正确的方向,我阅读netflix文档并阅读库文档,但无法弄清楚该怎么做。
verfier
答案 0 :(得分:1)
所以听起来你正试图使用python-oauth2。不幸的是,这个图书馆被广泛认为是废弃的。我强烈建议使用维护的库。为此,我可以推荐rauth。我是rauth的维护者,因为它的价值。
现在很遗憾,Netflix不接受其OAuth基础架构的新应用程序。但是我确实为你写了一个例子,如果你愿意给他一个机会,可以尝试一下。我不能保证,如果没有一些调整就不会工作,但这里是:
from rauth import OAuth1Service
import re
import webbrowser
request_token_url = 'http://api-public.netflix.com/oauth/request_token'
access_token_url = 'http://api-public.netflix.com/oauth/access_token'
authorize_url = 'https://api-user.netflix.com/oauth/login'
base_url = 'http://api-public.netflix.com/'
netflix = OAuth1Service(consumer_key='123',
consumer_secret='456',
request_token_url=request_token_url,
authorize_url=authorize_url,
access_token_url=access_token_url,
base_url=base_url)
request_token, request_token_secret = netflix.get_request_token()
oauth_callback = 'http://example.com/oauth/authorized'
params = {'oauth_callback': oauth_callback, 'application_name': 'your_app'}
authed_url = netflix.get_authorize_url(request_token, **params)
print 'Visit this URL in your browser: ' + authed_url
webbrowser.open(authed_url)
url_with_token = raw_input('Copy URL from your browser\'s address bar: ')
request_token = re.search('\?oauth_token=([^&]*)', url_with_token).group(1)
s = netflix.get_auth_session(request_token, request_token_secret)
r = s.get('users/current')
print r.content
这里需要注意的几件事:Netflix在他们的文档中没有提到验证器。所以我猜这就是你没有看到的原因。其次,他们正在返回'#34;授权"请求令牌到位。基本上,此标记会替换其流程中的验证程序引脚。
希望这有帮助!