Các bước để giảm thiểu tác động của những thay đổi về phạm vi đối với người dùng
- Nếu ứng dụng của bạn yêu cầu địa chỉ email của người dùng đã được xác thực và trước đây bạn đã sử dụng
profile.emails.read
cho mục đích đó, hãy sử dụngemail
. - Xin phê duyệt cho
profile.emails.read
bằng một yêu cầu xác minh đã được phê duyệt. Hãy tham khảo Làm cách nào để gửi yêu cầu xác minh? - Thu hồi mã thông báo người dùng trước đó về phạm vi cần xoá hoặc xoá hoàn toàn quyền truy cập vào ứng dụng. Ví dụ: mã thông báo có quyền truy cập
profile.emails.read
sẽ bị thu hồi. Bạn nên áp dụng lệnh thu hồi trong khi người dùng đang sử dụng ứng dụng để có thể nhận được sự đồng ý của người dùng ngay lập tức. - Nhắc người dùng đồng ý lại bằng phạm vi mới (chẳng hạn như
email
) mà không cầnprofile.emails.read
. - 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 Google.
Các thay đổi bạn phải thực hiện để di chuyển trang web của mình từ trang Đăng nhập bằng Google+ sang Google Quy trình đăng nhập phụ thuộc vào quy trình Đăng nhập bằng Google+ mà bạn sử dụng. Nhìn chung, việc di chuyển yêu cầu bạn cập nhật nút đăng nhập, 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 chiếu đến G+ hoặc sử dụng màu đỏ. Tuân thủ nguyên tắc ghi nhãn.
Hầu hết các ứng dụng Đăng nhập bằng G+ đều yêu cầu một số tổ hợp phạm vi:
plus.login
, plus.me
và plus.profile.emails.read
. Bạn cần gán lại
phạm vi của bạn 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 lấy mã OAuth từ Google và
ứng dụng gửi mã đó trở lại máy chủ, cùng với yêu cầu trên nhiều trang web
bảo vệ chống giả mạo. Sau đó, máy chủ xác thực mã, nhận được thông tin làm mới và
mã truy cập để lấy thông tin hồ sơ người dùng từ API people.get
.
Bây giờ, 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 giá trị nhận dạng đó từ máy khách của bạn đến máy chủ của bạn. Mã thông báo mã nhận dạng có biện pháp bảo vệ chống giả mạo trên nhiều trang web được tích hợp sẵn và cũng có thể được xác minh tĩnh trên máy chủ của bạn, giúp tránh 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 để xác thực mã thông báo mã nhận dạng trên máy chủ của bạn.
Nếu bạn vẫn muốn sử dụng quy trình mã để lấy thông tin hồ sơ,
bạn có thể làm như vậy. Sau khi máy chủ của bạn có mã truy cập, bạn cần phải
nhận thông tin hồ sơ người dùng
từ các điểm cuối userinfo
được chỉ định trong quy trình Đăng nhập
Tài liệu khám phá. API
phản hồi được định dạng khác với phản hồi của hồ sơ trên Google+, vì vậy bạn
cần phải cập nhật phân tích cú pháp của bạn sang đị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 theo bài tập của lớp học
g-signin
thành 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 của mình, trong thẻ
<meta>
,data-
hoặc một đối tượng tham số, hãy thay đổi chuỗiclientid
thànhclient_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ì lệnh gọi lại đơn, 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ì chỉ có một trình xử lý gọi lại, hãy xác định các trình xử lý thành công và không thành công, 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 phạm vi mặc định của bạn thành
profile email openid
. Bạn có thể xem thông tin cơ bản về hồ sơ của người dùng, chẳng hạn như tên, địa chỉ email và ảnh 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()
, thực hiện các thay đổi sau:
Khi bạn chỉ định mã ứng dụng khách của mình, trong thẻ
<meta>
,data-
hoặc một đối tượng tham số, hãy thay đổi chuỗiclientid
thànhclient_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ì chỉ có một trình xử lý gọi lại, hãy xác định các trình xử lý thành công và không thành công, 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 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 bắt đầu bằng JavaScript
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, thực hiện các thay đổi sau:
Khi bạn chỉ định mã ứng dụng khách của mình, trong thẻ
<meta>
,data-
hoặc một đối tượng tham số, hãy thay đổi chuỗiclientid
thànhclient_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 một nút được nhấn, 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ì chỉ có một trình xử lý gọi lại, hãy xác định các trình xử lý thành công và không thành công, 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 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 đến getBasicProfile()
.
Di chuyển quy trình kết hợp phía máy chủ
Nếu bạn đã sử dụng API JavaScript để lấy mã uỷ quyền một lần cho bạn để truyền đến máy chủ của bạn, hãy thực hiện những thay đổi sau:
Thay đổi phạm vi từ
https://www.googleapis.com/auth/plus.login
thànhprofile
.Sử dụng phương thức
gapi.auth2.grantOfflineAccess()
với lệnh gọi lại 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.