Integrate with Google APIs
The A3L Authentication SDK supports integration with Google APIs. This integration can allow a user access to a Google service after they sign in to your app with their Google account. Currently, A3L Authentication supports Google Drive scopes. For details on Google Drive scopes, see Choose Google Drive API scopes in the Google developer documentation.
Integrate Google Drive
To integrate Google Drive with your Fire OS app, you must first integrate with the A3L Authentication SDK and implement the sign-in feature. For instructions, see Integrate A3L Authentication SDK. Add the Google Drive SDK as a dependency in your app's build.gradle file, as shown here.
implementation('com.google.apis:google-api-services-drive:<version>')
Use version v3-rev20220709-2.0.0 or later of google-api-services-drive.
When you create the A3LSignInOptions
object, request the appropriate scopes for Google Drive through the requestScopes()
method, as shown in the following code.
A3LSignInOptions a3LSignInOptions = new A3LSignInOptions
.Builder(A3LSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(DriveScopes.<SCOPE>))
.requestEmail()
.build();
Create credentials
After signing in the user, create credentials for Google Drive with an FOSAccountCredential
object. When you create the object, pass the same scope that you passed for the A3LSignInOptions
, as shown in the following example.
FOSAccountCredential fosAccountCredential = new FOSAccountCredential.usingOAuth2(context, Collections.singleton(DriveScopes.<SCOPE>));
fosAccountCredential.setSelectedAccount(account);
Use this credential in your Google Drive builder, as shown here.
Drive googleDriveService = new Drive.Builder(new NetHttpTransport(),
new GsonFactory(),
fosAccountCredential)
.setApplicationName("<Your app name>")
.build();
Now you can use this Drive
object with Google Drive API calls. The following code shows how to use the Drive
object, and list the name and IDs of up to 10 files.
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());
}
}
FOSAccountCredential
object supports only Fire OS devices. For Google devices, use a GoogleAccountCredential
object. To determine which device is being used, use the getCurrentService()
API. This method returns the string GoogleSignIn
or AppAuth
based on the user's device.
Class differences
The following table lists the differences between the available methods in GoogleAccountCredential
and FOSAccountCredential
classes.
API | Available in GoogleAccountCredential | Available in FOSAccountCredential |
---|---|---|
static usingAudience(Context context, String audience) |
Yes | No |
static usingOAuth2(Context context, Collection<String> scopes) |
Yes | Yes |
Constructor (Context context, String scope) |
Yes | Yes |
getAllAccounts() |
Yes | Yes Returns only the account that was used to sign in |
getBackOff() |
Yes | Yes |
getContext() |
Yes | Yes |
getGoogleAccountManager() |
Yes | No |
getScope() |
Yes | Yes |
getSelectedAccount() |
Yes | Yes |
getSelectedAccountName() |
Yes | Yes |
getSleeper() |
Yes | Yes |
getToken() |
Yes | Yes |
initialize(HttpRequest request) |
Yes | Yes |
newChooseAccountIntent() |
Yes | No |
setBackOff(BackOff backOff) |
Yes | Yes |
setSelectedAccount(Account selectedAccount) |
Yes | Yes |
setSelectedAccountName(String accountName) |
Yes | Yes |
setSleeper(Sleeper sleeper) |
Yes | Yes |
Related topics
Last updated: Dec 05, 2023