2016-06-14 50 views
2

我试图使用Google云端硬盘同步某些媒体文件(视频/图片)并在我的Android应用中显示它们。Android Google Drive Rest API:跳过许可屏幕(硬编码帐户)

我已经成功地使这一切工作正常,但根据的文档(或从第一读取至少)它看起来像有必须始终保持在同意画面当用户选择了谷歌后帐户,同意应用程序从他的驱动器获取数据。

问题是我想'硬编码'一个帐户编程方式同意,因为我们的应用程序总是要采取同一个帐户的媒体。

这可能吗?

PD:不建议任何其他存储服务,Drive是客户的要求。

回答

0

最后,我已经成功地使它完全工作:

  1. 从您的谷歌开发者控制台创建服务帐户凭据
  2. 以json格式下载您的凭证。
  3. 将该文件复制到assets/res/raw
  4. 将你的json重命名为没有奇怪字符的东西(例如:driveserviceprivatekey.json)。
  5. 列表项

    InputStream privateJsonStream = dashboardActivity.getResources().openRawResource(R.raw.driveserviceprivatekey); 
        GoogleCredential serviceCredential = GoogleCredential.fromStream(privateJsonStream).createScoped(Arrays.asList(SCOPES)); 
    
  6. 现在你可以使用你的驱动器的服务如下:

      HttpTransport transport = AndroidHttp.newCompatibleTransport(); 
          JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 
          this.mService = new com.google.api.services.drive.Drive.Builder(
         transport, jsonFactory, null) 
         .setHttpRequestInitializer(credential) 
         .build(); 
    
2

为避免用户同意,您可以使用Service Account

在链接中指出,Google API(如Prediction API和Google云端存储)可以代表您的应用程序而不访问用户信息。在这些情况下,您的应用程序需要向API证明自己的身份,但没有用户同意是必要的。同样,在企业场景中,您的应用程序可以请求对某些资源进行委托访问。

对于这些类型的服务器到服务器交互,您需要一个service account,这是一个属于您的应用程序而不是单个最终用户的帐户。您的应用程序代表服务帐户调用Google API,并且用户同意不是必需的。 (在非服务帐户情况下,您的应用程序代表最终用户调用Google API,并且有时需要用户同意。)

您也可以检查此相关的SO问题以获取更多信息。

相关问题