【问题标题】:Connecting and Authorizing with the Google APIs Java Client使用 Google API Java 客户端连接和授权
【发布时间】:2016-01-05 09:29:05
【问题描述】:

我对公会Connecting and Authorizing with the Google APIs Java Client感到困惑

我已经编写了如下代码并获取了服务实例

GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE);
credential.setSelectedAccountName(accountName);
Drive service = new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential).build();

我不知道下一步是什么。

在我看来,这段代码中的 Drive 类与 Google API for Android 中的 Drive 类不同

那么我应该遵循 Drive REST API 还是 Drive API for Android。

【问题讨论】:

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


    【解决方案1】:

    这是 2 个不同的 API,不建议将它们混合在一起。 REST Api(v2v3)使用

    com.google.api.services.drive.Drive mGOOSvc =
      new Drive.Builder(
        AndroidHttp.newCompatibleTransport(),
        new GsonFactory(),
        GoogleAccountCredential.usingOAuth2(Context, Collections.singletonList(DriveScopes.DRIVE_FILE))
       ....
      )
    .build();
    

    访问 GooDrive 服务,即调用如下方法:

    mGOOSvc.files().get()...
    mGOOSvc.files().list()....
    mGOOSvc.files().insert()...
    mGOOSvc.files().patch()...
    mGOOSvc.files().update()...
    mGOOSvc.getRequestFactory().buildGetRequest()...
    

    使用您实例化的此服务。

    另一方面,GDAA 使用不同的构造:

    com.google.android.gms.common.api.GoogleApiClient mGAC 
      = new GoogleApiClient.Builder(Context)
      .addApi(Drive.API)
      .addScope(Drive.SCOPE_FILE)
      .addScope(Drive.SCOPE_APPFOLDER)
      .addConnectionCallbacks( new GoogleApiClient.ConnectionCallbacks() {...})
      .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {...})
      ....
      .build();
    

    创建用于访问 GDAA 的 GoogleApiClient mGAC,如下所示:

    mGAC.connect() / disconnect()
    Drive.DriveApi.getRootFolder(mGAC)...
    Drive.DriveApi.getAppFolder(mGAC)...
    Drive.DriveApi.getFolder(mGAC, ...)...
    Drive.DriveApi.query(mGAC, ...)...
    DriveFolder.createFile(mGAC, ..., ...)
    ...
    

    正如我上面提到的,除非您知道其中的含义,否则不要混合使用这两个 API(GDAA 是本地服务 - 请参阅 Drive Local Context in Lifecycle of a Drive file here,REST Api 直接与网络对话)。

    在 GitHub 上提供了这两个 API 的 2 个示例,在此处 (REST) 和此处 (GDAA) 解决了相同的问题(构建和读取目录树)。这两者的MainActivity几乎是一样的,分别调用包装类REST或GDAA的方法。

    祝你好运

    【讨论】:

    • 非常感谢您的解释。
    • 如果您决定使用 Github 示例,您可以安全地剥离 Accounr Manager (UT.AM)、Account Picker 和“电子邮件”的东西来简化它。帐户选择将由服务处理。您的应用将不知道您的用户选择了谁的帐户。
    猜你喜欢
    • 2020-09-23
    • 1970-01-01
    • 2020-01-01
    • 2014-11-18
    • 2018-07-11
    • 2017-05-16
    • 1970-01-01
    • 2016-10-22
    • 2014-01-08
    相关资源
    最近更新 更多