通过Node.js中的OAuth2对BigQuery REST API进行身份验证

时间:2012-08-16 14:09:21

标签: node.js oauth-2.0 google-bigquery

新手试图找出如何让Node.js应用程序验证和查询Google BigQuery,尝试调整this CodeLab tutorial from Java。我可能会缺少哪一步?

首先,我使用我的clientid:

创建此Oauth2网址
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

认为以下网址应列出我的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"
 }
}

我知道你不能重复代码,因为权限,过期的令牌等等。但我想知道我可能在概念上缺少哪一步。

2 个答案:

答案 0 :(得分:3)

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

,如

https://www.googleapis.com/bigquery/v2/projects/1047877053699/datasets/visits
Authorization: OAuth Your-access-token-here-not-urlencoded

答案 1 :(得分:1)

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