2016-08-02 20 views
1

下面不彈出一個窗口,是簡單地請求授權訪問用戶的電子表格一個javascript:gapi.auth.authorize()即日:假授權

var CLIENT_ID = '********'; 
var SCOPES = [ 
    'https://www.googleapis.com/auth/spreadsheets' 
]; 
function auth() { 
    gapi.auth.authorize({ 
     client_id: CLIENT_ID, 
     immediate: true, 
     scope: SCOPES 
    }, function(result) { 
     console.log('authorize(immediate = true)'); 
     if (result && !result.error) { 
      console.log('authorize [OK]'); 
     } else { 
      console.log('authorize [FAILED]'); 
      gapi.auth.authorize({ 
       client_id: CLIENT_ID, 
       immediate: false, 
       scope: SCOPES 
      }, function(result) { 
       console.log('authorize(immediate = false)'); 
       if (result && !result.error) { 
        console.log('authorize [OK]'); 
       } else { 
        console.log('authorize [FAILED]'); 
       } 
      }); 
     } 
    }); 
} 

我相信它應該做兩兩件事:

  1. 彈出一個窗口登錄,除非用戶已經登錄。
  2. 彈出一個窗口,要求授權訪問用戶的電子表格,除非授權已被前面已經批准。授權後,應用程序應列在Connected apps & sites下,不會再顯示帶授權的彈出窗口。

我使用兩個不同的Google帳戶測試此腳本。一個帳戶按預期工作,我得到的控制檯輸出如下:

auth.html:17 authorize(immediate = true) 
auth.html:21 authorize [FAILED] 
auth.html:27 authorize(immediate = false) 
auth.html:29 authorize [OK] 

使用其他帳戶授權彈出窗口不顯示和授權總是被授予如果我按「允許」或應用程序是下上市連接的應用程序&網站,但它不存在。控制檯輸出完全相同。

我一直在使用兩個瀏覽器完成這些測試:

  • 版本51.0.2704.79建立在8.4,在Debian 8.5(64位)
  • 的Firefox ESR 45.2.0,運行在Debian 8.5(運行64位)

所以,基本上我有以下問題:

  1. 是我關於彈出窗口科爾預期或使用immediate:true或immediate:false來調用gapi.auth.authorize()後面的想法是不同的?
  2. 這種「行爲不端」的原因是什麼?是否有任何「神聖的地方」的應用程序被列爲某些範圍的授權,而同一應用程序未顯示在下連接的應用程序&網站

注:CLIENT_ID在谷歌API控制檯的OAuth 2.0客戶端ID上市,型號爲Web應用程序和業主完全不涉及上述兩種不同的帳戶。

謝謝。

+0

你可以分享應用程序腳本嗎? –

+0

@RaghvendraKumar:其實,我已經簡單了:問題根本就沒有調用任何應用程序腳本,我只是調用gapi.auth.authorize()來請求電子表格權限,稍後通過調用一些應用程序腳本來使用它,但那會在解決上述問題之後完成。謝謝。 –

回答

1

回答您的問題:

  1. 是我關於彈出窗口正確或gapi.auth.authorize()呼叫立即背後的想法期望:true或直接:假的有什麼不同?
    • 是的,您對彈出窗口的期望是正確的。正如在發表在GitHub的一個相關issue #103討論的,當用戶觸發「gapi.auth.authorize」與按鈕點擊(immediate:false),流程如下:
  1. 具有權限授權彈出窗口示
  2. 當用戶接受/拒絕,彈出窗口被關閉
  3. 代替擊發回調,類型錯誤出現在控制檯(不管用戶的授權的應用程序是否處理所請求的數據或不)
  • 什麼可以是用於這種 「行爲不端」 的原因嗎?是否有任何「神聖的地方」的應用程序被列爲某些範圍的授權,而同一個應用程序不顯示在連接的應用程序&網站下?
    • 在GitHub上發佈,也可以對這個「行爲不當」,並從線程,這已經得到修復,可在GitHub post中找到依據的理由相關issue #103
  • 我希望有幫助。