当前位置: 首页 > 知识库问答 >
问题:

Angular10与BigQuery,获取访问拒绝:BigQuery BigQuery:权限被拒绝,同时获取驱动器凭据

勾起运
2023-03-14

我正在使用@google-Cloud/bigQuery将Angular10, Firebase与BigQuery集成。我在我的项目中创建了一个函数文件夹,并在其中添加了密钥json文件,该文件是在谷歌云控制台上生成服务帐户json后获得的。

我的BigQuery仪表板中有两个数据集,其源是Google Drive。但当我试图查询这些表时,我得到了一个错误。

在我的函数文件夹中,我有index.js文件,我正在使用以下方法初始化我的BigQuery客户端:

const bigqueryClient = new BigQuery({
    keyFilename:'./<name of key Json file from servie account>',
    scopes:['https://www.googleapis.com/auth/drive.readonly'],
    projectId:<Project-id>
  });

获取错误:“访问被拒绝:BigQuery BigQuery:获取驱动器凭据时权限被拒绝。”

另外,如果在初始化大查询客户端时删除projectId,控制台上会记录以下错误:

很抱歉,如果没有项目ID,我们无法连接到云服务。您可以使用名为“GOOGLE\u Cloud\u project”的环境变量指定一个

有人能帮我吗?

共有1个答案

吕向阳
2023-03-14

要解决此问题,您需要在BigQueryClient文件中定义您的作用域,该文件位于BigQueryLibrary结构application/libraries/BigQueryClient/vendor/google/cloud BigQueryClient/src/BigQueryClientpath的下面路径中。

进行以下更改

    const SCOPE=['https://www.googleapis.com/auth/drive','https://www.googleapis.com/auth/bigquery',];
        const INSERT_SCOPE = 'https://www.googleapis.com/auth/bigquery.insertdata';

 

    public function __construct(array $config = [])
        {
            $this->location = $this->pluck('location', $config, false);
            $this->setHttpRetryCodes([502]);
            $this->setHttpRetryMessages([
                'rateLimitExceeded',
                'backendError'
            ]);
            $config += [
                'scopes' => self::SCOPE,
                'projectIdRequired' => true,
                'returnInt64AsObject' => false,
                'restRetryFunction' => $this->getRetryFunction(),
                //@codeCoverageIgnoreStart
                'restCalcDelayFunction' => function ($attempt) {
                    return min(
                        mt_rand(0, 1000000) + (pow(2, $attempt) * 1000000),
                        self::MAX_DELAY_MICROSECONDS
                    );
                }
                //@codeCoverageIgnoreEnd
            ];
            $this->connection = new Rest($this->configureAuthentication($config));
            $this->mapper = new ValueMapper($config['returnInt64AsObject']);
        }
 类似资料:
  • 我正在尝试将DataStudio报表连接到表和来自BigQuery的视图。在BigQuery中,表从位于我的驱动器中的GoogleSheet接收数据,视图正在查询同一个表,但添加了一些新字段。当我尝试将图表连接到其中一个数据源时,出现以下错误: BigQuery错误:访问被拒绝:BigQuery BigQuery:获取驱动器凭据时权限被拒绝。 原因是什么?我该怎么做才能解决这个问题? 我要说的是,

  • 从今天起,我们的Airflow服务无法访问BigQuery中的查询。所有作业都会失败,并显示以下消息: [2021-03-12 10:17:28079]{taskinstance.py:1150}错误-原因:403获取https://bigquery.googleapis.com/bigquery/v2/projects/waipu-app-prod/queries/e62030d7-36eb-4

  • 我希望在我遇到的这个错误代码上得到一些帮助。 语境: 我工作的公司使用GSUITE产品。 我的团队有自己的云项目设置。 谷歌硬盘不是个人硬盘。 我们使用Airflow每天/每周/每月刷新BigQuery表。 我遵循了这些解决方案 拒绝访问:获取驱动器凭据时拒绝权限 使用带有Google工作表的BigQueryAPI时出现“全局文件模式时遇到错误”错误 还引用了https://cloud.googl

  • 我的应用程序中有一个活动,允许用户逐个从设备中选择多个文件,我正在使用这样的意图: 这工作得很好,我正在获取所选文件的Uri,它们看起来像这样: 然后,如果文件是图像,我将使用以下方式对其进行解码: 当用户单击按钮时,我通过 intent 将 Uris 列表传递给另一个活动,在此活动中,在 AsyncTask 中,我正在以 base64 编码文件以通过网络发送: 问题是,当我打开inputStre

  • 下面是我最初的问题,但我尝试了几个查询,最后接近解决问题。 在本教程之后,我成功地从GoogleApps脚本访问了BigQuery,但当查询包含GoogleSheet链接表时,会出现“获取驱动器凭据时权限被拒绝”错误。 由于BigQuery提供了一个创建与GoogleSheet链接的表的选项,所以我在这个设置中有几个表。 没有链接表的查询可以工作,所以代码的基本设置很好,我相信凭据设置在BigQu

  • 复制步骤: 在Google Sheets中创建工作表 启用部署管理器 我已经找到了一些这样的线索,但是它们都引用了使用“范围”来添加。我不知道如何向部署管理器请求添加作用域,也不知道作用域是如何工作的。 任何帮助都将不胜感激。