2016-01-20 54 views
0

我在Google雲端硬盤中創建了一個由Google電子表格支持的腳本,並將其發佈爲一個Web應用程序,將「執行應用程序爲:我」和「誰有權訪問該應用程序:任何人,甚至匿名」。主頁面從電子表格提供html內容。Google應用腳本網絡應用,如何創建登錄按鈕?

的基本功能是:「隨機的互聯網用戶」能夠看到一些信息,同時記錄和他的谷歌帳戶的用戶可以提交信息,以及。

的問題是 - 如果我設置爲「任何人」的人首先被重定向到標準的谷歌登錄頁面的權限,並且在登錄後必須接受腳本的權限。完成之後,只要您使用Google帳戶登錄,導航到Web應用程序就會給出「登錄用戶」版本。

但是 - 如果Web應用程序設置爲允許「匿名用戶」似乎沒有被任何(至少明顯的方式),以允許匿名用戶登錄並接受應用程序的權限。

我已經試過至今:

  • 的URL谷歌的鏈接重定向我,如果我如果Web應用程序需要先登錄用戶不是在登錄該作品,但我的感覺。它不是正確的方式,而且一旦登錄,就無法註銷或切換帳戶;似乎一旦你登錄,您登錄永遠
  • 使用https://developers.google.com/apps-script/reference/script/authorization-info#getAuthorizationUrl()得到驗證網址 - 但我不知道如何使用它返回的URL(導航用戶到該網頁的Web應用程序框架在頂部框架都導致一個空白頁)

我如何獲得一個登錄(和可能的交換機登錄)url允許匿名用戶登錄我的web應用程序?

+0

@BryanP我得到它的工作將用戶重定向到我得到改變腳本的權限,因此是絕對有可能的URL。我習慣了App Engine,它提供了創建登錄按鈕的功能,我覺得getAuthorizationUrl()是要走的路,但無法讓它工作 – thedayofcondor

回答

0

2個.GS Web應用程序項目創建示例代碼: one - 沒有權威性,運行作爲所有者,匿名可以訪問 two - 需要身份驗證,運行作爲用戶,任何人都可以訪問

...我不知道你的「我得到它的工作重定向用戶到URL」語句看起來像在代碼中。

第一個文件有一個點擊監聽器來充當登錄按鈕一個按鈕,但它只是呼籲window.top.location.href變化。 第二個應用程序使用ScriptApp.invalidateAuth();在客戶端按鈕單擊被調用後將用戶註銷。

Demo - 第一web應用程序的URL

我還是會投票只是提供一個第二web應用程序作爲在新窗口中打開彈出,雖然和我注意到在評論,上述強制用戶設置一個鏈接重新授權每次和註銷後。

+1

第二個想法是,'invalidateAuth()'不可能是你想要的,這比註銷更遠了一步。你想保持身份驗證,只是註銷會話或切換帳戶。也許其他人可以澄清是否可以由開發人員創建帳戶管理,或者是否是功能請求 –

+0

是的,當「以我身份運行」時invalidateAuth()爲腳本所有者取消授權腳本,而不是用戶。進一步調查和實施您的解決方案,我意識到它或者「像我一樣運行」,在這種情況下,腳本可以訪問受保護的電子表格或「以用戶身份運行」,在這種情況下,我根本無法讀取電子表格。如果我創建了兩個獨立的Web應用程序,似乎沒有辦法讓他們互相交流(除了未經身份驗證的Ajax調用) – thedayofcondor

+0

那麼,如果你留在App Engine世界,你可以考慮使用[Execution API](https:/ /developers.google.com/apps-script/guides/rest/quickstart/js)爲2個頁面提供1個應用程序。 1頁爲您的匿名觀衆然後另一個觸發登錄。我猜''gapi.auth.signOut();'會用於註銷? –

相關問題