Yêu cầu thêm quyền

Khi yêu cầu người dùng cho phép 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 trước tất cả phạm vi trong yêu cầu ban đầu hoặc chỉ khi yêu cầu các phạm vi cần thiết bằng cách sử dụng tính năng uỷ quyền gia tăng. Bằng cách sử dụng chế độ 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 thêm phạm vi khi cần có các quyền mới, trong ngữ cảnh xác định lý do yêu cầu dành cho 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ó thể yêu cầu thông tin cơ bản về 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 cấp 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ờ rằng người dùng không đăng nhập vì màn hình xin phép sự đồng ý của bạn đang quá tải hoặc bối rối về lý do họ được yêu cầu cấp một số quyền nhất định. Các hướng dẫn sau 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 phạm vi bổ sung

Khi đăng nhập, ứng dụng của bạn yêu cầu 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 này, khi người dùng muốn thực hiện một thao tác cần thêm phạm vi, ứng dụng của bạn sẽ yêu cầu các 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 trình tạo tuỳ chọn với 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}));
    });