在Python中使用OAuth进行身份验证时出错

时间:2013-01-27 16:51:56

标签: python api oauth calendar

我正在尝试学习如何将OAuth用于我正在开发的应用程序,而且我似乎无法围绕验证代码部分和重定向URI。这就是我所拥有的......我不明白重定向URI的意义,一旦得到有效的验证码。我怎样才能在JSON中为用户提供Google的日历活动?

from pyoauth2 import Client

CLIENT_ID = 'XXXXXXXXXXXXXX'
CLIENT_SECRET = 'XXXXXXXXXXXXXX'
REDIRECT_URL = 'XXXXXXXXXXXXXX'
SCOPE = 'https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email'

client = Client(CLIENT_ID, CLIENT_SECRET,
            site='https://www.googleapis.com/oauth2/v1',
            authorize_url='https://accounts.google.com/o/oauth2/auth',
            token_url='https://accounts.google.com/o/oauth2/token')

print '-' * 80
authorize_url = client.auth_code.authorize_url(redirect_uri=REDIRECT_URL, scope=SCOPE)
print 'Go to the following link in your browser:'
print authorize_url

code = raw_input('Enter the verification code and hit ENTER when you re done:')
code = code.strip()
access_token = client.auth_code.get_token(code, redirect_uri=REDIRECT_URL)
print 'token', access_token.headers

print '-' * 80
print 'get user info' 
ret = access_token.get('/userinfo')
print ret.parsed

哎呀..忘记了错误..我甚至不确定验证码应该是什么样的。

token {'Authorization': 'Bearer '}
--------------------------------------------------------------------------------
get user info
{u'error': {u'code': 401, u'message': u'Invalid Credentials', u'errors': [{u'locationType': u'header', u'domain': u'global', u'message': u'Invalid Credentials', u'reason': u'authError', u'location': u'Authorization'}]}}

1 个答案:

答案 0 :(得分:0)

根据您的要求,您可以考虑尝试rauth。 Rauth是OAuth 1.0 / a,2.0和Ofly的简单消费者客户端。虽然我没有立即提供Google的示例,但您可以在GitHub上查看example scripts,了解如何使用它。特别是,Facebook的例子应该是一个非常相似的流程。如果您需要更详细的帮助,请随时与我联系。