使用Google API Java客户端连接和授权

时间:2016-01-05 09:29:05

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

我对公会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不同

然后我应该关注适用于Android的Drive REST API或Drive API。

1 个答案:

答案 0 :(得分:1)

这些是两种不同的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, ..., ...)
...

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

GitHub上有两个这两个API的例子,在这里(REST)和这里(GDAA)解决了同样的问题(构建和阅读目录树)。这两个中的MainActivity几乎相同,它分别调用包装类REST或GDAA的方法。

祝你好运