访问特定帐户的 google 驱动器 API

Accesing google drive API for a specific account

我正在尝试通过我的 android 应用访问 google 驱动器以获取特定帐户。此外,我还有 sign in with google 选项,这样用户就可以通过 google+ 登录应用程序,这将是 google 播放服务正在使用的帐户。

但是,我想将一些文件存储在特定的 google 驱动器帐户上,比如说 abcd@gmail.com。我尝试通过指定驱动器 API、所需范围和帐户名称 'abcd@gmail.com' 来使用 GoogleAPIClient,如下所示:

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 的 specific/static 帐户以访问驱动器 APIs。

谢谢 索拉布

我认为您只能使用设备上 'registered' 的帐户 (xxx@gmail.com)(设置.. 帐户)。这意味着,您必须调用 Android 帐户选择器 activity 来让用户注册帐户(如果您的应用程序可以访问任何只知道它的电子邮件的帐户 - 没有密码,那将是一场安全灾难,对吧?).

如果您想深入了解执行此操作的代码,只需遵循 this code 中的“REQ_ACCPICK”常量即可。它向您展示了您必须使用的顺序。特别是:

  • 如果应用程序没有 'default email' 可以使用(GDAA.init() 失败),则会调用帐户选择器。
  • 用户从应用程序的菜单中调用帐户选择器,因此用户可以select/添加新帐户 (onOptionsItemSelected())。

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

祝你好运