获取 Google Cloud API 的访问令牌

问题描述 投票:0回答:1

我可以通过运行

gcloud
命令行工具轻松获取使用 Google Cloud API 所需的访问令牌(有效期仅 1 小时):

./google-cloud-sdk/bin/gcloud auth application-default print-access-token

但是,我需要从 Node.js 和 Flutter 应用程序获取访问令牌。我无法这样做,因为所需的信息包括 cliendID 和 clientSecret (我有),但也包括刷新令牌(我没有)。事实上,即使我可以获得刷新令牌,它也会定期过期。该怎么办?如何从我的应用访问 Google Cloud API?

更新:以下是如何在 Node.js 中执行此操作:

const { GoogleAuth } = require('google-auth-library');

async function getAccessToken() {
    const auth = new GoogleAuth({
        keyFilename: 'path/to/your/service-account-key.json',
        scopes: 'https://www.googleapis.com/auth/cloud-platform'
    });

    const client = await auth.getClient();
    const accessToken = await client.getAccessToken();
    return accessToken;
}

但我仍然不知道如何在 Dart/Flutter 中做到这一点......

google-cloud-platform google-api google-oauth
1个回答
0
投票

使用服务帐户密钥很少是解决方案

您的前端无法直接访问 Google API。正确的模式如下:

前端(flutter?)-> 后端(Cloud Run 上的节点?)-> Google API

在该模式中,由于元数据服务器(而不是服务帐户密钥),您可以使用后端服务帐户生成访问令牌。

现在的问题是:后端访问是公开的还是私有的?这取决于您的用例。如果需要身份验证,您可以使用 Cloud Identity(或 firebase auth)

© www.soinside.com 2019 - 2024. All rights reserved.