Khi yêu cầu người dùng cấp quyền truy cập vào dữ liệu người dùng hoặc các tài nguyên khác, bạn có thể yêu cầu tất cả các phạm vi ngay từ đầu trong yêu cầu ban đầu hoặc chỉ yêu cầu phạm vi khi cần bằng cách sử dụng tính năng uỷ quyền gia tăng. Khi sử dụng tính năng uỷ quyền gia tăng, ban đầu, ứng dụng của bạn chỉ yêu cầu các phạm vi cần thiết để khởi động ứng dụng, sau đó yêu cầu các phạm vi bổ sung khi cần cấp quyền mới, trong bối cảnh xác định lý do yêu cầu với người dùng.
Ví dụ: giả sử ứng dụng của bạn cho phép người dùng lưu danh sách phát nhạc vào Google Drive; ứng dụng của bạn có thể yêu cầu thông tin cơ bản của người dùng khi đăng nhập, sau đó, khi người dùng đã sẵn sàng lưu danh sách phát đầu tiên, chỉ yêu cầu quyền truy cập vào Google Drive.
Hãy sử dụng kỹ thuật này nếu bạn nghi ngờ người dùng không đăng nhập vì màn hình yêu cầu đồng ý của bạn quá phức tạp hoặc họ không hiểu lý do tại sao họ được yêu cầu cấp một số quyền nhất định. Hướng dẫn sau đây dành cho web và được lấy từ hướng dẫn thêm nút đăng nhập phía máy khách: Tạo nút Đăng nhập bằng Google 2.0. Bạn có thể đọc thêm về việc uỷ quyền gia tăng cho web trong tài liệu về OAuth 2.0.
Yêu cầu thêm phạm vi
Khi đăng nhập, ứng dụng của bạn yêu cầu các phạm vi "cơ sở", bao gồm phạm vi đăng nhập profile
cùng với mọi phạm vi ban đầu khác mà ứng dụng yêu cầu để hoạt động.
Sau đó, khi người dùng muốn thực hiện một hành động yêu cầu thêm phạm vi, ứng dụng của bạn sẽ yêu cầu những phạm vi bổ sung đó và người dùng chỉ cho phép các phạm vi mới trên màn hình đồng ý.
Bước 1: Yêu cầu phạm vi cơ sở
Yêu cầu phạm vi cơ sở profile
khi bạn khởi chạy tính năng Đăng nhập bằng Google. Bước này
có trong mục
Xây dựng nút Đăng nhập bằng Google 2.0.
auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
cookiepolicy: 'single_host_origin', /** Default value **/
scope: 'profile' }); /** Base scope **/
Bước 2: Yêu cầu thêm phạm vi
Bất cứ khi nào cần thêm phạm vi, hãy yêu cầu các phạm vi đó bằng cách tạo một trình tạo tuỳ chọn với các phạm vi bạn muốn thêm, sau đó gọi user.grant({scope:
[OPTIONS BUILDER]}).then(successFunction, failFunction);
:
const options = new gapi.auth2.SigninOptionsBuilder();
options.setScope('email https://www.googleapis.com/auth/drive');
googleUser = auth2.currentUser.get();
googleUser.grant(options).then(
function(success){
console.log(JSON.stringify({message: "success", value: success}));
},
function(fail){
alert(JSON.stringify({message: "fail", value: fail}));
});