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

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 trước tất cả các phạm vi trong yêu cầu ban đầu hoặc chỉ trong phạm vi yêu cầu khi cần bằng cách sử dụng tính năng uỷ quyền gia tăng. Bằng cách 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 thêm phạm vi khi cần có các quyền mới, trong ngữ cảnh xác định được lý do yêu cầu người dùng yêu cầu.

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 và sau đó, khi người dùng đã sẵn sàng lưu danh sách phát đầu tiên, hãy chỉ yêu cầu các quyền trên 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 sự đồng ý của bạn bị 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 đây 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ề tính năng uỷ quyền gia tăng cho web trong tài liệu về OAuth 2.0.

Đang yêu cầu phạm vi bổ sung

Khi đăng nhập, ứng dụng của bạn sẽ 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 đó, khi người dùng muốn thực hiện một hành động cần các phạm vi bổ sung, ứng dụng sẽ yêu cầu các phạm vi bổ sung đó và người dùng chỉ cấp quyền cho 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 nằm trong phần 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 phạm vi đó bằng cách tạo trình tạo tuỳ chọn với các phạm vi mà bạn muốn thêm, sau đó gọi user.grant({scope: [OPTIONS BUILDER]}).then(successFunction, failFunction);:

const option = new gapi.auth2.SigninOptionsBuilder();
option.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}));
    });