我有一個使用谷歌Apps腳本API執行調用返回我需要的數據功能的單個頁面的Web應用程序中調用gapi.auth.authorize。我基於quick start sample code provided by Google的我的項目。替代每次
這需要使用OAuth,我通過使用the client JavaScript library provided by Google的函數來完成該操作。
第一次要求用戶進行身份驗證以下函數用於:
gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: false}, handler);
後續API請求,還必須提供身份驗證令牌,所以我呼籲相同的功能,但immediate: true
:
gapi.auth.authorize({'client_id': CLIENT_ID, 'scope': SCOPES, 'immediate': true}, handler);
每一次,gapi.auth.authorize
被調用時,一個新的IFRAME
被添加到頁面,看似存儲認證操作的結果/令牌等
所以,是的,一切正常,但我想,必須有這樣做的更好的方法。
是否有另一種方法可以在初始驗證後進行後續API調用,而不需要使用gapi.auth.authorize
並在頁面中添加另一個IFRAME
?
據谷歌稱:
注意
初始用戶授權後,調用gapi.auth.authorize在使用即時:真正的模式將獲得身份驗證令牌不用戶交互。
感謝您的回覆。如果可能的話,我想避免請求對作用域的離線許可。當我調用'authorize'時,我找回了一個令牌對象。我不知道如何存儲它的'access_token'屬性,並且在請求之前不需要調用'authorize'就可以在後續請求中重新提供它。表面上看,即使在「脫機許可」情況下也需要這樣做。有沒有我可以調用的方法或其他我可以在提出請求之前設置授權標頭的方法?希望我有道理。 – bobleeswagger
訪問令牌將在一小時內過期。如果可以的話,你會繞過所需的離線許可。 oauth2客戶端實現依賴於(未提供的)瀏覽器安全功能,例如必須點擊某些內容(用戶操作以顯示權限對話框)或iframe,以便安全地爲您的代碼提供基於Google存儲的Cookie的新訪問令牌在瀏覽器中。因此需要iframe,因此它可以使用google.com域中的谷歌cookie。 –
非常感謝您的全面回覆。非常感謝。你讓它「有道理」。因此,我需要保持原樣並繼續調用授權,然後執行(並對IFRAMES進行架設),或者添加脫機範圍,然後爲用戶首次授權請求並存儲請求令牌。代表用戶的後續請求將通過提供其各自的請求令牌(我需要存儲和保護)進行授權。這將允許我反過來獲取不含大量IFRAMES的訪問令牌等。非常感謝! – bobleeswagger