问题描述
|
RequestError: Unable to upgrade OAuth request token to access token: 400,signature_invalid
base_string:POST&https%3A%2F%2Fwww.google.com%2Faccounts%2FOAuthGetAccesstoken&oauth_consumer_key%3Dcalendar-auth.appspot.com%26oauth_nonce%3D646112512717164%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1306760936%26oauth_token%3D4%252F-cP-Ai1NzxDtLehvtzRbGd4SHZ1-%26oauth_verifier%3DPYGMYX8riH9AfpJvTEh_Ztzm%26oauth_version%3D1.0
我是Google Apps开发的新手。正在尝试在Web应用程序中实现OAuth。当我调用GetAccesstoken()方法时,它会显示上述错误。请帮助我。
我正在使用以下代码...:
class MainHandler(webapp.RequestHandler):
def get(self):
CONSUMER_KEY = \'xyz\'
CONSUMER_SECRET = \'xyz\'
ScopES = [\'https://docs.google.com/Feeds/\',\'https://www.google.com/calendar/Feeds/\'] # example of a multi-scoped token
client = gdata.docs.client.DocsClient(source=\'xyz\')
oauth_callback_url = \'http://%s/get_access_token\' % self.request.host
request_token = client.GetoAuthToken(
ScopES,oauth_callback_url,CONSUMER_KEY,consumer_secret=CONSUMER_SECRET)
memcache.add(\"rtoken\",request_token,3600)
domain = \'default\' # If on a Google Apps domain,use your domain (e.g. \'example.com\').
url = str(request_token.generate_authorization_url(google_apps_domain=domain))
self.redirect(url)
class AuthToken(webapp.RequestHandler):
def get(self):
client = gdata.docs.client.DocsClient(source=\'xyz\')
saved_request_token = memcache.get(\"rtoken\")
request_token = gdata.gauth.AuthorizeRequestToken(saved_request_token,self.request.uri)
self.response.out.write(\"Got the token\")
access_token = client.GetAccesstoken(request_token)
解决方法
https://www.google.com/accounts/OAuthGetAccessToken
{
oauth_consumer_key=calendar-auth.appspot.com
oauth_nonce=646112512717164
oauth_signature_method=HMAC-SHA1
oauth_timestamp=1306760936
oauth_token=4/-cP-Ai1NzxDtLehvtzRbGd4SHZ1-
oauth_verifier=PYGMYX8riH9AfpJvTEh_Ztzm
oauth_version=1.0
}
我建议不要向公众发布oauth令牌。
根据http://wiki.oauth.net/w/page/12238555/Signed-Callback-URLs,您应该发布oauth_signature,但我没有在列表中看到它