Один из моих университетских проектов - создать мобильное приложение с помощью Android Studio, и приложение должно использовать REST API, вход в Google и аутентификацию.Мое приложение будет обращаться к пользовательским библиотекам книг Google, которые являются частными.Чтобы сделать это, я создал вход в Google, который аутентифицирует пользователя.
Scope SCOPE_BOOKS =
new Scope("https://www.googleapis.com/auth/books");
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.requestProfile()
.requestScopes(SCOPE_BOOKS)
.build();
mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this)
.enableAutoManage(this, this )
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addScope(SCOPE_BOOKS)
.build();
Все отлично работает.Я даже получаю диалог, который просит пользователя разрешить моему приложению получить доступ к их книгам Google.Куда мне идти сейчас?Как получить токен доступа?и т. д.
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInWithCredential:success");
FirebaseUser user = firebaseAuth.getCurrentUser();
mStatusTextView.setText(getString(R.string.signed_in_fmt, user.getDisplayName()));
Glide.with(MainActivity.this).load(user.getPhotoUrl()).into(mBannerImageView);
AddToLocalStorage("userData", "DisplayName", user.getDisplayName());
AddToLocalStorage("userData", "Email", user.getEmail());
AddToLocalStorage("userData", "Avatar", user.getPhotoUrl().toString());
AddToLocalStorage("userData", "UserId", user.getUid());
Toast.makeText(MainActivity.this,
"Welcome, " + user.getDisplayName(), Toast.LENGTH_SHORT).show();
updateUI(true);
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInWithCredential:failure", task.getException());
//Toast.make(findViewById(R.id.main_layout), "Authentication Failed.", Snackbar.LENGTH_SHORT).show();
updateUI(false);
}
hideProgressDialog();
}
});
}
Как создать обратный вызов для предоставления токенов доступа?С самого начала я уже знал, что oAuth от Google - это боль, особенно когда я пытаюсь получить доступ к личным данным пользователей.Может ли кто-нибудь взмахнуть палочкой и помочь однокласснику?