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

问题描述:

新手试图弄清楚如何让Node.js应用程序对Google BigQuery进行身份验证和查询,尝试修改this CodeLab tutorial from Java。我可能会错过什么步骤?通过Node.js中的OAuth2对BigQuery REST API进行身份验证

首先,我创建一个使用我的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 

这成功地达到谷歌,它会提示

第三方服务请求访问您的谷歌帐户。

一致表示产生第二提示:

Nodejs_Test请求权限: 查看和谷歌的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" 
} 
} 

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

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

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

谢谢!得到它的工作。学习曲线是多步骤的,但是这提供了正确的关键字来锁定。 – prototype 2012-08-21 02:09:57

仅供参考 - 看起来像您最初使用的参数accessToken在URL中。它应该改为access_token,看起来好像很好。当然,如果你能够做到这一点,Jordan的使用标题的建议更好 - 它更安全,因为它不太可能登录访问日志,代理服务器日志等。