访问特定帐户的google drive API

时间:2015-09-29 09:30:49

标签: android google-drive-api google-drive-android-api

我正在尝试通过我的Android应用访问特定帐户的谷歌驱动器。此外,我还使用google 选项登录,以便用户可以通过google +登录该应用,这将是播放服务正在使用的Google帐户。

但是,我想将一些文件存储在特定的Google云端硬盘帐户abcd@gmail.com上。我尝试使用GoogleAPIClient指定DRIVE 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.

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

由于 SAURABH

1 个答案:

答案 0 :(得分:0)

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

如果您想深入了解代码,请按照this code中的' REQ_ACCPICK '常量进行操作。它会显示您必须使用的序列。特别是:

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

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

祝你好运