該方法是太安全:沒有人可以訪問。如果您的網絡應用程序部署了「執行應用程序爲我」選項,則Session.getActiveUser().getEmail()
可能會返回空字符串。見documentation:
在何種情況下的電子郵件地址可有所不同:例如,用戶的電子郵件地址不在允許腳本,並且不需要用戶的權限運行,就像任何上下文中可用[...]一個部署爲「作爲我執行」的web應用程序(即由開發人員而不是用戶授權)。但是,如果開發人員和用戶屬於同一個G Suite網域,這些限制通常不適用。
的問題是,即使用戶登錄後才能訪問的Web應用程序,他們並沒有授權其代表他們做任何事,例如,發現他們的電子郵件地址。
如果Web應用程序被部署爲由「用戶訪問Web應用程序」執行,那麼他們將被要求授權,因此Web應用程序可以學習他們的身份。但是,它只能修改用戶已經可以直接修改的文件。
我解決這個難題的方法是給授權用戶一個關鍵的web應用程序(一些長的隨機字符串)。他們通過將https://..../exec?key=mykey
訪問應用程序,該應用程序檢查重點如下:現在
function doGet(e) {
if (e.parameter.key == "mykey") {
var ss = SpreadsheetApp.openById("spreadsheet Id");
// modify the spreadsheet
}
}
,這是比你原來的做法更是簡陋,但很有效。如果錯誤的人獲得鑰匙,他們將能夠使用該應用程序,但損害將限於應用程序可以做的事情。它不像有人訪問您的Google帳戶那麼糟糕。
來源
2017-08-12 18:40:56
FTP