Di chuyển từ đăng nhập bằng Google+

Các bước để giảm thiểu tác động của việc thay đổi phạm vi đối với người dùng

  1. Nếu ứng dụng của bạn yêu cầu địa chỉ email của người dùng đã xác thực và trước đây bạn đã sử dụng profile.emails.read cho mục đích đó, hãy sử dụng email.
  2. Yêu cầu xác minh được phê duyệt cho profile.emails.read. Hãy tham khảo Làm cách nào để gửi yêu cầu xác minh?
  3. Thu hồi mã thông báo của người dùng trước đó về phạm vi phải loại bỏ hoặc loại bỏ hoàn toàn quyền truy cập vào ứng dụng. Ví dụ: cần thu hồi mã thông báo có quyền truy cập profile.emails.read. Bạn nên áp dụng việc thu hồi này khi người dùng đang trong ứng dụng của bạn để bạn có thể nhận được sự đồng ý của người dùng ngay lập tức.
  4. Nhắc người dùng đồng ý lại với phạm vi mới (chẳng hạn như email) mà không có profile.emails.read.
  5. Xoá phạm vi sẽ bị loại bỏ khỏi cấu hình màn hình xin phép bằng OAuth cho các API của Google.

Những thay đổi bạn phải thực hiện để di chuyển trang web của mình từ Đăng nhập bằng Google+ sang Đăng nhập bằng Google tùy thuộc vào quy trình Đăng nhập bằng Google+ mà bạn sử dụng. Nhìn chung, quá trình di chuyển yêu cầu bạn cập nhật nút đăng nhập, các phạm vi yêu cầu và hướng dẫn về cách truy xuất thông tin hồ sơ từ Google.

Khi bạn cập nhật nút đăng nhập, đừng tham khảo G+ hoặc sử dụng màu đỏ. Tuân thủ nguyên tắc sử dụng thương hiệu đã cập nhật của chúng tôi.

Hầu hết ứng dụng Đăng nhập bằng G+ đã yêu cầu một số tổ hợp phạm vi: plus.login, plus.meplus.profile.emails.read. Bạn cần liên kết lại phạm vi như sau:

Phạm vi cũ Phạm vi mới
plus.login profile
plus.me openid
plus.profile.emails.read email

Nhiều người triển khai tính năng Đăng nhập bằng Google+ đã sử dụng luồng mã. Điều này có nghĩa là các ứng dụng Android, iOS hoặc JavaScript sẽ lấy mã OAuth của Google và ứng dụng gửi mã đó trở lại máy chủ, cùng với yêu cầu bảo vệ giả mạo trên nhiều trang web. Sau đó, máy chủ xác thực mã rồi lấy mã làm mới và mã truy cập để lấy thông tin hồ sơ người dùng từ API people.get.

Hiện tại, bạn nên yêu cầu mã thông báo giá trị nhận dạng và gửi mã thông báo mã nhận dạng đó từ ứng dụng khách đến máy chủ của bạn. Mã thông báo mã nhận dạng được tích hợp sẵn các biện pháp bảo vệ chống giả mạo trên nhiều trang web và cũng có thể được xác minh tĩnh trên máy chủ của bạn. Điều này giúp tránh một lệnh gọi API bổ sung để lấy thông tin hồ sơ người dùng từ các máy chủ của Google. Làm theo hướng dẫn để xác thực mã thông báo giá trị nhận dạng trên máy chủ của bạn.

Nếu vẫn muốn sử dụng luồng mã để lấy thông tin hồ sơ, bạn có thể thực hiện. Sau khi máy chủ của bạn có mã truy cập, bạn cần lấy thông tin hồ sơ người dùng từ điểm cuối userinfo được chỉ định trong tài liệu Khám phá đăng nhập của chúng tôi. Phản hồi của API được định dạng khác với phản hồi của hồ sơ trên Google+ nên bạn cần cập nhật quá trình phân tích cú pháp thành định dạng mới.

Di chuyển nút đăng nhập bằng HTML

Nếu bạn đã đưa nút Đăng nhập bằng Google+ vào trang của mình bằng cách chỉ định lớp g-signin cho một phần tử, hãy thực hiện các thay đổi sau:

  • Khi bạn chỉ định mã ứng dụng khách, trong thẻ <meta>, thuộc tính data- hoặc đối tượng thông số, hãy thay đổi chuỗi clientid thành client_id, như trong ví dụ sau:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Chỉ định lớp g-signin2 cho phần tử nút đăng nhập thay vì g-signin. Ngoài ra, hãy chỉ định các lệnh gọi lại thành công và không thành công riêng biệt thay vì một lệnh gọi lại, như trong ví dụ sau:

    <!-- Google+ Sign-in (old) -->
    <div
      class="g-signin"
      data-callback="signinCallback">
    </div>
    

    <!-- Google Sign-in (new) -->
    <div
      class="g-signin2"
      data-onsuccess="onSignIn"
      data-onfailure="onSignInFailure">
    </div>
    
  • Thay vì một trình xử lý gọi lại duy nhất, hãy xác định trình xử lý thành công và trình xử lý lỗi, như trong ví dụ sau:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    
  • Những thay đổi này sẽ cập nhật các phạm vi mặc định của bạn thành profile email openid. Bạn có thể lấy thông tin hồ sơ cơ bản của người dùng, chẳng hạn như tên, email và URL hình ảnh như sau:

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      let profile = googleUser.getBasicProfile();
      let fullName = profile.getName();
      let email = profile.getEmail();
      let imageUrl = profile.getImageUrl();
    }
    

Di chuyển nút đăng nhập được kết xuất động

Nếu bạn đã đưa nút Đăng nhập bằng Google+ vào trang của mình bằng cách gọi gapi.signin.render(), hãy thực hiện các thay đổi sau:

  • Khi bạn chỉ định mã ứng dụng khách, trong thẻ <meta>, thuộc tính data- hoặc đối tượng thông số, hãy thay đổi chuỗi clientid thành client_id, như trong ví dụ sau:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Hiển thị nút đăng nhập bằng gapi.signin2.render() thay vì gapi.signin.render(), như trong ví dụ sau:

    // Google+ Sign-in (old)
    gapi.signin.render('myButton', additionalParams);
    

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • Thay vì một trình xử lý gọi lại duy nhất, hãy xác định trình xử lý thành công và trình xử lý lỗi, như trong ví dụ sau:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Những thay đổi này sẽ cập nhật các phạm vi mặc định của bạn thành profile email openid. Bạn có thể lấy thông tin hồ sơ cơ bản của người dùng bằng phương thức getBasicProfile().

Di chuyển quy trình đăng nhập do JavaScript khởi tạo

Nếu bạn bắt đầu quy trình đăng nhập bằng lệnh gọi đến gapi.auth.signIn() khi người dùng nhấp vào nút đăng nhập, hãy thực hiện các thay đổi sau:

  • Khi bạn chỉ định mã ứng dụng khách, trong thẻ <meta>, thuộc tính data- hoặc đối tượng tham số, hãy thay đổi chuỗi clientid thành client_id, như trong ví dụ sau:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Sử dụng gapi.auth2.attachClickHandler() để bắt đầu quy trình đăng nhập khi người dùng nhấn một nút, như trong ví dụ sau:

    // Google+ Sign-in (old)
    var signinButton = document.getElementById('signinButton');
    signinButton.addEventListener('click', function() {
      gapi.auth.signIn(additionalParams);
    });
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init();
    auth2.attachClickHandler('signinButton', additionalParams, onSignIn, onSignInFailure);
    
  • Thay vì một trình xử lý gọi lại duy nhất, hãy xác định trình xử lý thành công và trình xử lý lỗi, như trong ví dụ sau:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Những thay đổi này sẽ cập nhật các phạm vi mặc định của bạn thành profile email openid. Bạn có thể lấy thông tin hồ sơ cơ bản của người dùng bằng cách gọi phương thức getBasicProfile().

Di chuyển luồng phía máy chủ kết hợp

Nếu bạn sử dụng API JavaScript để lấy mã uỷ quyền một lần cho việc truyền đến máy chủ của mình, hãy thực hiện các thay đổi sau:

  • Thay đổi phạm vi từ https://www.googleapis.com/auth/plus.login thành profile.

  • Hãy sử dụng phương thức gapi.auth2.grantOfflineAccess() với hàm callback hiện có, như trong ví dụ sau:

    <!-- Google+ Sign-in (old) -->
    <div class="g-signin"
      data-scope="https://www.googleapis.com/auth/plus.login"
      data-clientid="YOUR_CLIENT_ID"
      data-redirecturi="postmessage"
      data-accesstype="offline"
      data-callback="signInCallback">
    </div>
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init({
      client_id: 'YOUR_CLIENT_ID',
      scope: 'profile'
    });
    
    ...
    
    auth2.grantOfflineAccess().then(signInCallback);
    

Nếu bạn cũng cần quyền truy cập vào email của người dùng, hãy thêm email vào tham số phạm vi.