Мы прекращая Google для входа в систему JavaScript платформенной библиотеки для веб - сайтов . Для проверки подлинности и пользователь входа в систему , использовать новые Google Identity Services SDKs как для Web и Android вместо .

Интеграция входа в Google в ваше приложение для Android

Чтобы интегрировать Google Sign-In в ваше приложение Android, настройте Google Sign-In и добавьте кнопку в макет вашего приложения, которая запускает процесс входа.

Прежде чем вы начнете

Настройка проекта Google API Console и создать свой проект Android Studio .

Настройте вход в Google и объект GoogleSignInClient.

  1. В вашем знаке-в деятельности в onCreate метод, настроить Google Вход в систему, чтобы запросить пользовательские данные , необходимые для работы приложения. Например, чтобы настроить Google для входа в системе, чтобы ID пользователей Запроса и основную информацию профиля, создать GoogleSignInOptions объект с DEFAULT_SIGN_IN параметром. Для адресов электронной почты пользователей запроса , а также, создать GoogleSignInOptions объект с requestEmail опцией.

    // Configure sign-in to request the user's ID, email address, and basic
    // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

    Если вам необходимо запросить дополнительную области для доступа к Google API , укажите их requestScopes . Для наилучшего взаимодействия с пользователем при входе в систему запрашивайте только те области, которые необходимы для минимальной работы вашего приложения. Запрашивайте любые дополнительные области только тогда, когда они вам нужны, чтобы ваши пользователи видели экран согласия в контексте выполняемого действия. См запрашивающей дополнительные областей .

  2. Затем, также в вашем знаке, в деятельности в onCreate метод, создать GoogleSignInClient объект с параметрами , которые вы указали.

    // Build a GoogleSignInClient with the options specified by gso.
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Проверить наличие существующего вошедшего в систему пользователя

В вашей деятельности в onStart метода, проверьте , если пользователь уже вошел в приложение с помощью Google.

// Check for existing Google Sign In account, if the user is already signed in
// the GoogleSignInAccount will be non-null.
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);

Если GoogleSignIn.getLastSignedInAccount возвращает GoogleSignInAccount объект (а не null ), пользователь уже вошли в приложение с помощью Google. Обновите свой пользовательский интерфейс соответствующим образом, то есть скройте кнопку входа, запустите основное действие или что-то еще, подходящее для вашего приложения.

Если GoogleSignIn.getLastSignedInAccount возвращает null , пользователь еще не вошли в приложение с помощью Google. Обновите свой пользовательский интерфейс, чтобы отображалась кнопка входа в Google.

Добавьте кнопку входа в Google в свое приложение

  1. Стандартная кнопка входа в Google Добавьте SignInButton в макет вашего приложения:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. Необязательно: Если вы используете для входа в системе по умолчанию кнопки графического вместо предоставления своего собственного знака-в кнопочных активах, вы можете настроить размер баттона с setSize методом.

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. В Android деятельности (например, в onCreate метода), зарегистрировать вашу кнопку он OnClickListener для входа пользователя при нажатии:

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

Начать процесс входа

  1. Изображение средства выбора учетной записи для входа В своей деятельности по onClick метод, ручка вход кнопки отводов пути создания входа в цели с getSignInIntent способом, а начиная намерение с startActivityForResult .

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.sign_in_button:
                signIn();
                break;
            // ...
        }
    }
    
    private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    При запуске намерения пользователю предлагается выбрать учетную запись Google для входа. Если вы запрашивали области за пределами profile , email и openid , пользователь также будет предложен предоставить доступ к запрашиваемым ресурсам.

  2. После того, как признаки пользователей, вы можете получить GoogleSignInAccount объект для пользователя в деятельности по onActivityResult методы.

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == RC_SIGN_IN) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(task);
        }
    }

    GoogleSignInAccount объект содержит информацию о зарегистрирован пользователе, таких как имя пользователя.

    private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
        try {
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);
    
            // Signed in successfully, show authenticated UI.
            updateUI(account);
        } catch (ApiException e) {
            // The ApiException status code indicates the detailed failure reason.
            // Please refer to the GoogleSignInStatusCodes class reference for more information.
            Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
            updateUI(null);
        }
    }

    Вы можете также получить адрес электронной почты пользователя с getEmail , пользователя Google ID (для клиентской части использования) с getId и идентификатором маркером для пользователя с getIdToken . Если вам нужно передать в настоящее время зарегистрирован пользователем на внутренний сервер, отправить идентификатор маркера вашего бэкэнда серверу и проверить маркер на сервере.