Android Studio Google Вход в области - Доступ к личным данным пользователя - PullRequest
0 голосов
/ 26 ноября 2018

Один из моих университетских проектов - создать мобильное приложение с помощью 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 - это боль, особенно когда я пытаюсь получить доступ к личным данным пользователей.Может ли кто-нибудь взмахнуть палочкой и помочь однокласснику?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...