2014-04-09 62 views
2

我正在使用requests_oauthlib模块进行OAuth身份验证。 不幸的是,我不能重现您好!OAuth1流程acoording步骤之一,本教程:http://requests-oauthlib.readthedocs.org/en/latest/oauth1_workflow.html 如果我试图获得获取响应它抛出我的跟随着错误:OAuth1与requests_oauthlib产生URL编码错误

Traceback (most recent call last): 
    File "/home/neumannr/test.py", line 18, in <module> 
    fetch_response = oauth.fetch_request_token(request_token_url) 
    File "/usr/lib/python2.7/site-packages/requests_oauthlib/oauth1_session.py", line 195, in fetch_request_token 
    token = self._fetch_token(url) 
    File "/usr/lib/python2.7/site-packages/requests_oauthlib/oauth1_session.py", line 264, in _fetch_token 
    token = dict(urldecode(self.post(url).text)) 
    File "/usr/lib/python2.7/site-packages/oauthlib/common.py", line 135, in urldecode 
    raise ValueError('Not a valid urlencoded string.') 
ValueError: Not a valid urlencoded string. 

我的测试代码如下:

#! /usr/bin/env python 


# Using OAuth1Session 
from requests_oauthlib import OAuth1Session 

# Using OAuth1 auth helper 
import requests 
from requests_oauthlib import OAuth1 

client_key = 'a' 
client_secret = 'b' 
request_token_url = 'https://api.twitter.com/oauth/request_token' 


# Using OAuth1Session 
oauth = OAuth1Session(client_key, client_secret=client_secret) 
fetch_response = oauth.fetch_request_token(request_token_url) 

由于本教程中的URL没有被URL编码,所以我不明白为什么会发生这种情况。如果我尝试URL编码这样的网址:

#! /usr/bin/env python 


# Using OAuth1Session 
import urllib 
from requests_oauthlib import OAuth1Session 

# Using OAuth1 auth helper 
import requests 
from requests_oauthlib import OAuth1 

client_key = 'a' 
client_secret = 'b' 
request_token_url = urllib.quote('https://api.twitter.com/oauth/request_token') 


# Using OAuth1Session 
oauth = OAuth1Session(client_key, client_secret=client_secret) 
fetch_response = oauth.fetch_request_token(request_token_url) 

我得到一个丢失的架构错误:

Traceback (most recent call last): 
    File "/home/neumannr/test.py", line 19, in <module> 
    fetch_response = oauth.fetch_request_token(request_token_url) 
    File "/usr/lib/python2.7/site-packages/requests_oauthlib/oauth1_session.py", line 195, in fetch_request_token 
    token = self._fetch_token(url) 
    File "/usr/lib/python2.7/site-packages/requests_oauthlib/oauth1_session.py", line 264, in _fetch_token 
    token = dict(urldecode(self.post(url).text)) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 377, in post 
    return self.request('POST', url, data=data, **kwargs) 
    File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 324, in request 
    prep = req.prepare() 
    File "/usr/lib/python2.7/site-packages/requests/models.py", line 222, in prepare 
    p.prepare_url(self.url, self.params) 
    File "/usr/lib/python2.7/site-packages/requests/models.py", line 291, in prepare_url 
    raise MissingSchema("Invalid URL %r: No schema supplied" % url) 
requests.exceptions.MissingSchema: Invalid URL u'https%3A//api.twitter.com/oauth/request_token': No schema supplied 

如何使用oauthlib_requests呢?

感谢,

理查德

回答