Chúng tôi đang ngừng Google Đăng trong JavaScript Thư viện Cương lĩnh web . Để thẩm định và người dùng đăng nhập, sử dụng dịch vụ nhận dạng Google SDK mới cho cả webAndroid thay vì .

Tích hợp Đăng nhập bằng Google vào Ứng dụng Android của bạn

Để tích hợp Đăng nhập bằng Google vào ứng dụng Android của bạn, hãy định cấu hình Đăng nhập bằng Google và thêm một nút vào bố cục ứng dụng của bạn để bắt đầu quy trình đăng nhập.

Trước khi bắt đầu

Cấu hình một dự án Google API Console và thiết lập dự án Android Studio của bạn .

Định cấu hình Đăng nhập Google và đối tượng GoogleSignInClient

  1. Trong đăng nhập vào các hoạt động của bạn onCreate phương pháp, cấu hình Google Đăng nhập để yêu cầu dữ liệu người dùng theo yêu cầu của ứng dụng của bạn. Ví dụ, để cấu hình Google đăng nhập vào ID yêu cầu của người sử dụng và thông tin hồ sơ cơ bản, tạo ra một GoogleSignInOptions đối tượng với DEFAULT_SIGN_IN tham số. Để địa chỉ email yêu cầu của người sử dụng là tốt, tạo GoogleSignInOptions đối tượng với requestEmail tùy chọn.

    // 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();

    Nếu bạn cần yêu cầu phạm vi bổ sung cho Google truy cập vào API, xác định chúng với requestScopes . Để có trải nghiệm người dùng tốt nhất, khi đăng nhập, chỉ yêu cầu các phạm vi cần thiết để ứng dụng của bạn hoạt động ở mức tối thiểu. Chỉ yêu cầu bất kỳ phạm vi bổ sung nào khi bạn cần để người dùng của bạn nhìn thấy màn hình đồng ý trong bối cảnh hành động mà họ đã thực hiện. Xem Yêu cầu Scopes bổ sung .

  2. Sau đó, cũng trong của bạn đăng nhập vào các hoạt động của onCreate phương pháp, tạo ra một GoogleSignInClient đối tượng với các tùy chọn mà bạn chỉ định.

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

Kiểm tra người dùng đã đăng nhập hiện có

Trong của hoạt động của bạn onStart phương pháp, kiểm tra xem một người dùng đã đăng nhập vào ứng dụng của bạn với 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);

Nếu GoogleSignIn.getLastSignedInAccount trả về một GoogleSignInAccount đối tượng (chứ không phải là null ), người dùng đã đăng nhập vào ứng dụng của bạn với Google. Cập nhật giao diện người dùng của bạn cho phù hợp — nghĩa là ẩn nút đăng nhập, khởi chạy hoạt động chính của bạn hoặc bất kỳ điều gì phù hợp với ứng dụng của bạn.

Nếu GoogleSignIn.getLastSignedInAccount trả về null , người dùng chưa đăng nhập vào ứng dụng của bạn với Google. Cập nhật giao diện người dùng của bạn để hiển thị nút Đăng nhập Google.

Thêm nút Đăng nhập Google vào ứng dụng của bạn

  1. Nút đăng nhập chuẩn của Google Thêm SignInButton trong cách bố trí ứng dụng của bạn:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. Tùy chọn: Nếu bạn đang sử dụng đăng nhập mặc định nút đồ họa thay vì cung cấp đăng nhập của riêng bạn tài sản nút, bạn có thể tùy chỉnh kích thước của nút có setSize phương pháp.

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. Trong hoạt động Android (ví dụ, trong onCreate phương pháp), đăng ký của nút bấm của bạn OnClickListener để đăng nhập người dùng khi click:

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

Bắt đầu quy trình đăng nhập

  1. Hình ảnh của trình chọn tài khoản đăng nhập Trong thập niên hoạt động onClick phương pháp, xử lý đăng nhập vòi nút bằng cách tạo ra một đăng nhập với ý định getSignInIntent phương pháp, và bắt đầu mục đích với 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);
    }

    Bắt đầu mục đích nhắc người dùng chọn một tài khoản Google để đăng nhập. Nếu bạn yêu cầu phạm vi ngoài profile , email , và openid , người sử dụng cũng được nhắc nhở để cấp quyền truy cập vào các nguồn tài nguyên được yêu cầu.

  2. Sau khi người dùng đăng nhập, bạn có thể có được một GoogleSignInAccount đối tượng cho người sử dụng vào những hoạt động onActivityResult phương pháp.

    @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);
        }
    }

    Các GoogleSignInAccount đối tượng chứa thông tin về người dùng đăng nhập, chẳng hạn như tên của người dùng.

    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);
        }
    }

    Bạn cũng có thể có được địa chỉ email của người dùng với getEmail , Google ID của người dùng (để sử dụng client-side) với getId , và một ID Mã thông báo cho người sử dụng với getIdToken . Nếu bạn cần phải vượt qua hiện dùng đã đăng nhập vào một máy chủ phụ trợ, gửi ID token để máy chủ phụ trợ của bạn và xác nhận các dấu hiệu trên máy chủ.