oauth2库和Netflix API返回无访问令牌

时间:2013-04-02 04:45:03

标签: python rest oauth netflix

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

1 个答案:

答案 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;授权"请求令牌到位。基本上,此标记会替换其流程中的验证程序引脚。

希望这有帮助!