2016-12-04 86 views
0

避免第二次「審覈權限」提示我已經搜索了StackOverflow等,以解決此問題,並且有幾個答案指出了我的方向(提及approval_prompt = auto不是approval_prompt = force),但沒有一個適用於我的情況(據我所知)。在Google Apps腳本中,可能通過使用approval_prompt

我在www.mjpanel.com上託管的Web應用程序希望使用我自己的Google Apps腳本,但www.mjpanel.com上的Javascript調用Google Apps腳本(作爲Web應用程序部署與doGet())作爲Web服務。它期望Web服務調用返回各種JSON對象。

如果用戶尚未授權我的應用程序,那麼對Google Apps腳本Web應用程序/ Web服務的調用將不會返回JSON對象,從而導致www.mjpanel.com Javascript代碼無法說出「無效的請求」(因爲它不是我的代碼所期望的JSON對象)。

爲了防止這種情況發生,www.mjpanel.com使用gapi.auth2.init來獲取它所需的權限/範圍。我現在正在開發所有內容,因此,如果/當Google Apps腳本演變爲使用某些東西(例如發送GMail電子郵件作爲用戶)時,我一直在計算要請求的範圍,並將其添加到範圍列表中gapi.auth2.init調用,一切都很好。用戶下次使用該應用程序時,最初會提示他們添加新添加的範圍,然後所有事情都會正常進行。

但是,現在有時我的一個測試用戶的Web服務調用失敗,因爲Google Apps腳本正在返回另一個'擁有Offline Access'權限的請求。

沒有任何關於我的腳本,將保證用戶需要授予此權限。

當我研究時,很多東西(主要是關於在'結構'中請求OAuth2的東西與我的應用程序建立方式不同的東西)「表示它與我的請求中提交'approval_prompt = force'有關URL。

但是,我有我的應用程序設置的方式,我會使用的所有網址(除了我在查詢字符串中的'自定義內容')都由Google Apps腳本規定。而且我找不到任何我使用的URL有任何approval_prompt的地方。

我找不到需要將approval_prompt配置爲auto的位置(正如我找到的'成功答案'中所建議的那樣)。

如果approval_prompt的想法是'錯誤的軌道',任何信息一般來幫助我解決這個問題將不勝感激。

在此先感謝您提供的任何幫助。

回答

0

不幸的是,Google Apps Script本機OAuth流量包括approval_prompt=force。這會導致以下情況:

  • 如果cookie存在於瀏覽器中且具有此應用程序的許可權,則不會顯示同意屏幕。

  • 如果在瀏覽器中存在的cookie,但沒有爲這個應用程序的權限:同意屏幕將顯示

  • 如果cookie不瀏覽器存在,並且應用程序的權限:應用程序會要求「離線訪問」 。

最簡單的方法是管理自己的OAuth流並使用Execution API。以下鏈接將帶您到JavaScript快速入門。

https://developers.google.com/apps-script/guides/rest/quickstart/target-script