【问题标题】:Google Drive API with iOS using the app service account使用应用服务帐户的 iOS 版 Google Drive API
【发布时间】:2013-05-13 16:02:39
【问题描述】:

我正在实现一个 iOS 应用程序,该应用程序将从 Google Drive 文档中提取内容。该文档对于每个客户都是相同的,并且与用户的 Google 帐户完全分开。 我按照教程观看了有关如何将 SDK 用于 Xcode 项目的视频,我还在 API 控制台上设置了一个 Google drive 应用程序并创建了它的服务帐户。我的问题是如何在客户端幻灯片上跳过用户身份验证步骤以防止访问他们自己的 Google 帐户并简单地连接到应用服务帐户。

【问题讨论】:

标签: ios google-drive-api google-oauth


【解决方案1】:

在 Java (Android) 中可以将 SDK 与服务帐户一起使用,但在 iOS 中则不行。我不知道为什么,我希望将来会有所改变。

目前,以编程方式登录您的应用程序 google 帐户作为服务帐户的唯一方法是 hacky。您需要登录您的应用程序并保存从 API 检索到的身份验证令牌。然后你可以像这样重用它:

_driveService = [[GTLServiceDrive alloc] init];

GTMOAuth2Authentication *auth = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName clientID:kClientID clientSecret:kClientSecret];
[auth setKeysForPersistenceResponseString:kDriveAPIToken];
_driveService.authorizer = auth;

Google 表示,除非达到同时有效令牌的最大数量,否则令牌不会更改,然后令牌被 FIFO 清除(最旧的有效令牌无效)。

【讨论】:

  • 您能否进一步详细说明您无法在 iOS 中使用服务帐户的信息?尽管我自己在 iOS SDK 中找不到与服务帐户相关的任何内容,但我在 Google 上找不到任何关于此问题的内容...
  • 对于 java 中的服务帐户:developers.google.com/identity/protocols/OAuth2ServiceAccount。 iOS 没有这样的东西(至少在我看的时候,1 年前)。
  • 自从我在 10 月发帖以来,我改变了我的工作流程。我现在有一个中间 API,它将通过服务帐户连接到谷歌 API。我的 Android 和 iOS 应用程序将连接到我的 API。这样会更干净、更可靠。
  • 是的,我现在也在使用中间 API 服务。不过,感谢您的见解。
  • 那么替代方案是什么?
【解决方案2】:

即使用户正在访问他们自己的数据,您的应用也会获得对这些数据的访问权,以便为用户提供服务或功能。这使得 Google 有必要要求并获得用户同意才能共享数据。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 2014-09-26
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
相关资源
最近更新 更多