5

Tôi có tiện ích mở rộng đầu tiên yêu cầu quyền truy cập các tệp Google Drive. Phần mở rộng là gần như trống rỗng, ngoại trừ trong các popup tôi tải này JS:Xóa quyền của các tiện ích mở rộng

chrome.identity.getAuthToken({ 'interactive': true }, function(token) { 
    // Use the token. 
    console.log('Request Token') 
    console.log(token) 
    chrome.identity.removeCachedAuthToken(
       { 'token': token }, function() {}) 
    console.log('Removed token') 
}); 

Trong manifest của tôi, tôi có chìa khóa hợp lệ, OAuth2 id khách hàng, và "scopes":["https://www.googleapis.com/auth/drive"] bên cạnh phím tiêu chuẩn khác để mở rộng chrome.

Nó hoạt động bình thường mà nó được yêu cầu quyền lúc đầu và sau đó đã đăng nhập mã thông báo truy cập của tôi. Tuy nhiên, khi tôi cài đặt lại phần mở rộng (xóa/sửa đổi/thêm) nó đã không yêu cầu tôi cho phép và chỉ cần viết cùng một mã thông báo truy cập. Và tôi muốn xin phép lại. Tôi có thể làm cái này như thế nào?

Trả lời

6

Để loại bỏ điều khoản tôi có thêm một yêu cầu GET để thu hồi giấy phép:

chrome.identity.getAuthToken({ 'interactive': true }, function(token) { 
    // Use the token. 
    if (token) { 
     // Make a request to revoke token 
     var xhr = new XMLHttpRequest(); 
     xhr.open('GET', 'https://accounts.google.com/o/oauth2/revoke?token=' + 
      token); 
     xhr.send(); 
    } 
    chrome.identity.removeCachedAuthToken(
       { 'token': token }, function() {}) 
}); 

Đó hiện các trick và bây giờ mỗi khi tôi mở cửa sổ bật lên Tôi có một dấu nhắc cho phép.

Có một vấn đề khác mặc dù: khi Tôi cho phép tôi nhận được

XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/revoke?token=... 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'chrome-extension://acfnd...' is therefore not allowed access. 

mà tôi không chắc chắn những gì có nghĩa.

0

Khi bạn đã cấp quyền, tất nhiên bạn sẽ không được nhắc lại. Bạn sẽ cần phải truy cập trang Tài khoản Google của mình và thu hồi quyền.

+0

có, đây là phương pháp tốt nhất vì các luồng oauth khác giống như của nó. nhưng câu trả lời thiếu chi tiết và liên kết tốt hơn. –

6

Trong quá trình phát triển, bạn có thể truy cập chrome://identity-internals để thu hồi mã thông báo cụ thể. Lần sau, bạn cho phép người dùng đó hộp thoại quyền sẽ được hiển thị lại. Tài liệu trên User Authentication: Caching.

Các vấn đề liên quan