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 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ỉ yêu cầu phạm vi khi cần, sử dụng tính năng uỷ quyền tăng dần. Khi sử dụng chế độ uỷ quyền gia tăng, ban đầu, ứng dụng của bạn chỉ yêu cầu 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 dưới dạng quyền mới bắt buộc, trong ngữ cảnh xác định lý do yêu cầu 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 về người dùng khi đăng nhập, và sau đó là 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 đối với 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 do màn hình xin phép quá tải hoặc bối rối về lý do họ được yêu cầu cho một số quyền nhất định. Các hướng dẫn sau là dành cho web và được lấy từ hướng dẫn cách thêm nút đăng nhập phía máy khách: Xây dựng nút Đăng nhập bằng Google 2.0. Bạn có thể đọc thêm về 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 "base" (cơ sở) phạm vi, 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 của bạn yêu cầu để hoạt động. Sau đó, khi người dùng muốn thực hiện một thao tác yêu cầu thêm phạm vi, ứng dụng của bạn 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. Chiến dịch này bước được bao gồm trong 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 bằng cách tạo các tuỳ chọn trình tạo 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}));
    });