使用 API 密钥访问 Google API

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

我正在创建一个服务器端应用程序,它能够访问(创建、编辑和删除文件)我的谷歌驱动器中的特定文件夹。我能够使用

OAuth
和服务帐户来实现它,但我想在没有 OAuth 或服务帐户的情况下实现它,就像官方 docs 中那样。当我尝试使用
API Key
时,它给出了需要登录的错误。我该如何解决?

srv, err := drive.NewService(
    ctx,
    option.WithAPIKey(key),
    option.WithScopes(drive.DriveFileScope),
)

错误:

googleapi: Error 401: Login Required, required

go google-api google-drive-api google-oauth google-api-go-client
2个回答
2
投票

您首先需要了解的是私有数据和公共数据之间的区别。

公共数据是不属于任何人所有、任何人都可以访问的数据。 Google 日历上的假期日历。如果用户将公共视频上传到 YouTube,您也不需要访问权限。我们使用公共 API 密钥来访问公共数据。

私人数据是另一回事。私有数据是用户拥有的数据。为了使您的应用程序能够访问它,您需要获得数据所有者或有权访问该数据的人的同意。 Google 云端硬盘上的用户文件及其 Google 云端硬盘帐户是私人用户数据。您确实需要访问权限,因为它们是私人用户数据。

您收到以下错误消息是因为

googleapi: Error 401: Login Required, required

如果您检查Files.create,您会注意到它告诉您需要访问它的权限。

要回答您的问题,您不能使用公共 api 密钥来访问用户的私人 google 云端硬盘帐户。您可以使用 api 密钥读取他们设置为公开的文件。然而,要在用户的私人谷歌驱动器帐户上读取、写入和创建文件。您将无法创建和编辑文件。为此,您需要用户的许可。

Oauth2

如果您尝试访问用户的帐户,那么您需要切换到 Oauth2 并请求他们同意访问他们的驱动器帐户。一旦您拥有刷新令牌,您将能够从您的服务器系统访问他们的帐户。

服务帐号

如果您正在访问开发者控制的帐户。如果您不打算访问用户的帐户,那么您应该考虑使用服务帐户。如果您有任何问题,请查看并提出新问题。

安全

授权不会打扰您。它是为了确保您的数据和用户的数据的安全。不要试图寻找绕过安全性的方法。学习如何使用它。

就像官方文档中一样。

官方文档中没有任何内容表明您可以使用公共 api 密钥访问私人用户数据。去(不会/不能)改变谷歌强加给我们的底层安全性来访问他们的系统。也就是说,您需要用户同意才能访问私人用户数据。


0
投票

此 API 不支持 API 密钥。

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