首页 文章

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

提问于
浏览
2

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

首先,我使用我的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 .

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

  • 1

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

    如在

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

    仅供参考 - 看起来您最初在URL中使用了参数 accessToken . 它应该由 access_token 代替,看起来它工作正常 . 当然,Jordan 's suggestion of using a Header is better if you'能够做到这一点 - 它不太可能登录访问日志,代理服务器日志等 .

相关问题