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

为特定帐户访问google drive API

郑波
2023-03-14

我正在尝试通过我的android应用程序访问特定帐户的google drive。此外,我还可以使用google选项登录,这样用户就可以通过google登录应用程序,这将是play services使用的google帐户。

但是,我想在特定的google drive帐户上存储一些文件,比如说abcd@gmail.com 。我尝试使用GoogleAppClient,将驱动器API、所需的作用域和帐户名指定为'abcd@gmail.com,如下所示:

serviceClient = new GoogleApiClient.Builder(this)
         .addApi(Drive.API)
         .setAccountName("abcd@gmail.com").addConnectionCallbacks(this)
         .addScope(Drive.SCOPE_FILE)  
         .addOnConnectionFailedListener(this)
         .build();
serviceClient.connect();

但是,我有一个错误:

The specified account does not exist on this device. Please choose different account.

如何连接到google的特定/静态帐户以访问驱动器API。

谢谢Saurabh


共有1个答案

璩慎之
2023-03-14

我相信您只能使用帐户(xxx@gmail.com)在您的设备上“注册”的(设置..帐户)。这意味着,你必须调用Android帐户选取器活动,让用户注册帐户(如果你的应用程序只能在知道任何帐户是电子邮件的情况下访问它,这将是一场安全灾难-没有密码,对吧?)。

如果您想深入研究执行此操作的代码,只需遵循此代码中的“REQ_ACCPICK”常量。它会向您显示您必须使用的序列。特别是:

  • 如果应用程序没有可使用的“默认电子邮件”(GDAA.init()失败),则会调用帐户选择器
  • 帐户选择器由用户从应用程序的菜单中调用,以便用户可以选择/添加新帐户(onOptions ItemSelected())

需要注意的是,如果您不通过任何电子邮件,GDAA的“GoogleApiClient. Builder()”(您上面的代码)会调用类似的帐户选择器。我相信某个地方有一种方法可以重置您的“serviceClient”,允许GDAA构建器再次重新调用帐户选择器(请参阅clearDefaultAccount tAndRenect())。
我从未使用过这种方法,您可以进一步调查这条路径。我想我没有遵循这一点,因为我无法检索用户选择的当前帐户。并且当前用户是谁的知识对于我的应用程序至关重要(缓存帐户特定数据等...)

祝你好运

 类似资料:
  • 我想授予服务帐户访问Google Secrets Manager中的秘密的权限。 我可以像这样获得这个秘密: 但是当我的服务号尝试相同的命令时,gCloud会发出以下错误: 错误:(gcloud.beta.secrets.versions.access)权限被拒绝:请求的身份验证范围不足。 主要问题是:我还需要做些什么来确保服务帐户可以访问该机密? 我已授予该服务帐户“roles/secretma

  • 我正在尝试构建一个使用数据库的应用程序,允许用户以管理员或员工身份登录 管理员几乎没有选项: 添加新员工, 列出所有员工和 为选定员工添加待办事项 受雇者 登录时显示待办事项 我遇到的第一个问题是: 我应该为所有记录(员工)只创建一个表吗 第二个问题是,我不知道如何为成功登录的用户显示项目列表。如何访问登录用户的数据?

  • 我有一个lambda,它使用来自另一个AWS帐户的Athena的数据。因此,我有一个角色,我的lambda假定该角色具有跨帐户访问权限。我在lambda中使用了STS客户端。有时lambda运行得非常好,有时它会出现故障,给我这个错误。 “errorMessage”:“调用StartQueryExecution操作时发生错误(ExpiredTokenException):请求中包含的安全令牌已过期

  • 我有两个AWS账户。帐户1有一个CloudSearch域,我需要从帐户2中的Lambda函数查询该域。我遵循了一个教程,在Account1中创建一个允许跨帐户访问的角色。 因此,在帐户1中,我有一个角色,如下所示: 此角色有一个受信任的实体,即帐户2,我可以在IAM控制台中该角色的受信任实体部分下看到正确的帐户ID。 在帐户2中,我创建了一个Lambda函数,其执行角色如下所示: 我的Lambda

  • 我正在更新一个Web服务应用程序,该应用程序调用Google的日历API来列出特定日历的日历事件并插入新的日历事件。我正在尝试将其升级到api的版本3。对于身份验证,我使用我在Google Developers Console(https://console.developers.google.com)中创建的服务帐户凭据。我可以使用以下代码创建CalendarService: 但是当我调用lis

  • 我正在尝试从web应用程序连接到azure帐户存储,我得到了以下错误:“类型的异常-'Microsoft。“windows azure . storage . storage exception”在Microsoft.WindowsAzure.Storage.dll中发生,但未在用户代码中处理 其他信息:无法解析远程名称:“xxx.table.core.windows.net” 我在配置中只提供x