Data Studio Connector无法获取BigQuery服务帐户的访问令牌:访问未授予或已过期

问题描述

我正在尝试建立一个社区连接器,以使用作为BigQuery项目的Owner / DataViewer / JobUser连接的服务帐户将BigQuery中的数据库连接到Data Studio。我知道该服务帐户在连接到BigQuery时可以工作,因为我已经在其他地方对其进行了测试。我几乎完全从本教程(https://developers.google.com/datastudio/solution/blocks/using-service-accounts)的连接器代码中复制了代码,用查询替换了SQL字符串,并添加了一些不同的查询参数。我还通过粘贴json对象并将其存储如下,将服务帐户的凭据存储在脚本属性中:

var service_account_creds_obj = {
    "type": "service_account","project_id": ...
    ...
}
scriptProperties.setProperty('SERVICE_ACCOUNT_CREDS',JSON.stringify(service_account_creds_obj));

但是,当我的getData函数调用getOauthService().getAccessToken()时,总是会卡在流中,但它永远不会成功返回。当我使用连接器创建报告时,出现以下错误:“访问未授予或过期。”我找不到getAccessToken的文档,无法理解为什么它不会终止。我可以看到它不会返回,因为显示该行之前的console.log,但是它永远不会到达下一行的日志。然后我的try-catch块捕获了我所看到的错误。请注意,我的getOauthService函数与文档/教程示例中的函数完全相同,除了在调用createService的过程中我一直在处理输入文本。输入的文字对不应该那么重要?

请,我已经尝试调试了好几个小时,但是关于此的文档非常糟糕,而且调试起来非常困难,因为代码流是在后台处理的,而堆栈驱动程序日志记录确实有问题。 / p>

解决方法

我发现了我的问题。上面发布的文档称将OAuth2范围设置为https://www.googleapis.com/auth/bigquery.readonly。但是,我天真地加入了

"oauthScopes": ["https://www.googleapis.com/auth/bigquery.readonly"]

在我的清单文件中。同时,我从文档复制过来的代码已经包含以下行:

.setScope(['https://www.googleapis.com/auth/bigquery.readonly']);

所以我不确定为什么会引起问题。但这一定阻止了OAuth2.createService函数的正确设置。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...