2

我正在尝试在基于 Web 的仪表板上实现一个按钮,该按钮允许用户使用 OAuth 和 GData API 将当前数据导出到 Google 电子表格。目前,我可以让用户进入登录/授予访问页面,但是如果我添加将请求令牌转换为访问令牌的行,我会收到:

“RequestError:无法升级 OAuth 请求令牌以访问令牌:400,parameter_absent oauth_parameters_absent:oauth_token”

我正在遵循此页面上有关 OAuth 2 的说明:

https://developers.google.com/gdata/docs/auth/oauth

并阅读了 Google API 的 PyDocs 并没有发现有关此问题的详细信息:

http://gdata-python-client.googlecode.com/hg/pydocs/gdata.docs.client.html#DocsClient

(不会让我发布此超链接,但其他 Pydoc 是相同的 URL,但将 pydocs/ 之后的部分替换为 gdata.gauth.html#ClientLoginToken)

这是有效的代码:

def createDocsClient(self, oauth_callback_url):
  docsClient = gdata.docs.client.DocsClient(source='RiskOps-QualityDashboard')
  request_token = docsClient.GetOAuthToken(SCOPES, oauth_callback_url, CONSUMER_KEY,  consumer_secret=CONSUMER_SECRET)
  domain = None
  auth_url = request_token.generate_authorization_url(google_apps_domain=domain)
  self.redirect(str(auth_url))
  request_token = gdata.gauth.AuthorizeRequestToken(request_token, self.request.uri

使用上面的代码,我进入了一个授权访问页面,如果你点击授权访问页面,你会得到一个 404 错误,因为它不知道去哪里(如预期的那样),但是页面有正确的 URL 显示列表oauth_verifier 和 oauth_token。“AuthorizeRequestToken”行应该使用该 URL 来授权令牌,所以直到这一行,一切似乎都正常。

当我在上面的代码之后添加以下行时,我得到了我写的“RequestError”:

access_token = docsClient.GetAccessToken(request_token)

我已经尝试使用 AeSave 和 AeLoad 将调用相互嵌套的不同组合(可能需要说明,但我不确定我的案例是否需要它)以及许多其他随机和不成功的想法,但没有什么是真的让我很好地了解我错过了什么或做错了什么。

真的很感激和帮助或任何人有任何想法。(如果你不能说,我在现实世界的代码(而不是学术代码)方面相当缺乏经验。非常感谢。

4

0 回答 0