开发者控制台

与Google API集成

与Google API集成

A3L身份验证SDK支持与Google API集成。这种集成可以允许用户在使用其Google账户登录您的应用后访问Google服务。目前,A3L身份验证支持Google Drive作用域。有关Google Drive作用域的详细信息,请参阅Google开发者文档中的选择Google Drive API作用域

集成Google Drive

要将Google Drive与Fire OS应用集成,您必须首先与A3L身份验证SDK集成并实现登录功能。如需相关说明,请参阅集成A3L身份验证SDK。将Google Drive SDK作为依赖项添加到应用的build.gradle文件中,如下所示。

implementation('com.google.apis:google-api-services-drive:<version>')

使用google-api-services-drive的v3-rev20220709-2.0.0版本或更高版本。

创建A3LSignInOptions对象时,通过requestScopes()方法为Google Drive请求适当的作用域,如以下代码所示。

A3LSignInOptions a3LSignInOptions = new A3LSignInOptions
.Builder(A3LSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(DriveScopes.<SCOPE>))
.requestEmail()
.build();

创建凭证

登录用户后,使用FOSAccountCredential对象为Google Drive创建凭证。创建对象时,传递与为A3LSignInOptions传递的作用域相同的作用域,如以下示例所示。

FOSAccountCredential fosAccountCredential = new FOSAccountCredential.usingOAuth2(context, Collections.singleton(DriveScopes.<SCOPE>));
fosAccountCredential.setSelectedAccount(account);

在您的Google Drive生成器中使用此凭证,如下所示。

Drive googleDriveService = new Drive.Builder(new NetHttpTransport(),
                            new GsonFactory(),
                            fosAccountCredential)
                            .setApplicationName("<应用名称>")
                            .build();

现在,您可以将此Drive对象与Google Drive API调用一起使用。以下代码显示如何使用Drive对象,并列出最多10个文件的名称和ID。

FileList result = googleDriveService.files().list()
     .setPageSize(10)
     .setFields("nextPageToken, files(id, name)")
     .execute();
List<File> files = result.getFiles();
if (files == null || files.isEmpty()) {
  System.out.println("No files found.");
} else {
  System.out.println("Files:");
  for (File file : files) {
  System.out.printf("%s (%s)\n", file.getName(), file.getId());
  }
}

类差异

下表列出了GoogleAccountCredentialFOSAccountCredential类中可用方法之间的差异。

API 在GoogleAccountCredential中可用 在FOSAccountCredential中可用
static usingAudience(Context context, String audience)
static usingOAuth2(Context context, Collection<String> scopes)
Constructor (Context context, String scope)
getAllAccounts()
仅返回用于登录的账户
getBackOff()
getContext()
getGoogleAccountManager()
getScope()
getSelectedAccount()
getSelectedAccountName()
getSleeper()
getToken()
initialize(HttpRequest request)
newChooseAccountIntent()
setBackOff(BackOff backOff)
setSelectedAccount(Account selectedAccount)
setSelectedAccountName(String accountName)
setSleeper(Sleeper sleeper)

Last updated: 2023年12月5日