无法从 Firebase Functions (v2) 向 Google Slides API 进行身份验证

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

我需要使用内置(或其他)服务帐户从我的 Firebase 功能访问 Slides API,而不是登录到 Firebase 的应用程序用户。我已确保服务帐户具有编辑器权限并且已启用幻灯片 API,但我什至还没有达到这一点。

理想情况下,我想代表我组织中的用户进行调用(我已启用域范围的内容),如此答案中所述,但目前我什至无法仅使用默认帐户。

根据其他答案,我尝试了此代码的各种版本:

const {google} = require('googleapis');
const app = initializeApp();

exports.fillTrifecta = onCall(async (request) => {
  const gAuth = new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/presentations.readonly'],
  });
  const gAuthClient = await gAuth.getClient();
  const slides = google.slides({ version: 'v1', gAuthClient });

  const presentation = await slides.presentations.get({
    presentationId: userSlideId
  });
...

但继续出现

Login Required
错误。我已经在本地模拟器中尝试过并部署到生产环境中。

google-api google-cloud-functions google-workspace google-slides-api
1个回答
0
投票

正如您所展示的,您不能这样做。

您应该遵循您的理想道路并遵循@linda-lawton-daimto 的建议。

包括幻灯片在内的工作区 API 不受 Cloud IAM 管理,因此在服务帐户上设置编辑者角色是无效的。工作区 API 可与您正确设置的 OAuth 范围配合使用。

问题在于 Workspace API 保护用户内容,任意服务帐户访问 Workspace API 用户内容的唯一方法是:

  1. 域范围内授权为此目的批准服务帐户
  2. 为 DWD 服务帐户指定要模拟的特定用户。

有一种黑客(!?)替代方法,涉及与任意服务帐户的电子邮件地址共享工作区文档(例如幻灯片演示文稿)(〜

{account}@{project}.iam.gserviceaccount.com
)。

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