2

新手试图弄清楚如何让 Node.js 应用程序进行身份验证和查询 Google BigQuery,试图从 Java 改编本 CodeLab 教程。我可能会错过哪一步?

首先,我使用我的 clientid 创建这个 Oauth2 URL:

https://accounts.google.com/o/oauth2/auth?
    client_id=1047877053699-den6kbs4v3f2bft6clonsirkj1pc7t6j.apps.googleusercontent.com
    &scope=https://www.googleapis.com/auth/bigquery
    &redirect_uri=http://localhost:3000/oauth2callback
    &access_type=offline
    &response_type=code

这成功到达谷歌,提示

第三方服务正在请求访问您的 Google 帐户的权限。

同意生成第二个提示:

Nodejs_Test 正在请求以下权限: 查看和管理您在 Google BigQuery 中的数据

同意这一点,回调 URL 被调用,带有一个参数accessToken

认为以下 url 应该列出我的 BigQuery 项目/数据集中的表:

https://www.googleapis.com/bigquery/v2/projects/1047877053699/datasets/visits&accessToken=4%2FC196NizZwlNgWSt5oNqQwendmLNW.0vgUrlGJ6kMRshQV0ieZDApig3NfcgI

但无论是否使用 accessToken 调用都会返回以下消息“需要登录”。

 {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

我知道由于权限、过期令牌等原因,您无法重复代码。但我想知道我在概念上可能遗漏了哪一步。

4

2 回答 2

3

您是否尝试过将 accesstoken 作为授权标头而不是作为 url 参数发送?

如在

https://www.googleapis.com/bigquery/v2/projects/1047877053699/datasets/visits
Authorization: OAuth Your-access-token-here-not-urlencoded
于 2012-08-16T14:51:35.397 回答
1

仅供参考 - 看起来您最初accessToken在 URL 中使用了该参数。它应该改为access_token,看起来它工作正常。当然,如果你能够做到,Jordan 建议使用 Header 会更好——它更安全,因为它不太可能登录访问日志、代理服务器日志等。

于 2012-08-20T18:38:52.770 回答