2016-12-14 61 views
2

我在做什麼:運行谷歌選擇器與脫機訪問的OAuth令牌

我在我的網頁上集成Google Picker。這將允許用戶從Google雲端硬盤中選擇要在網絡應用中使用的文件。在應用程序中,組中的人共享一個共同的谷歌驅動器(即他們都可以從帳戶[email protected]中選擇文件),這是由組管理員通過他的電子郵件地址創建的。當管理員爲我們的帳戶註冊帳戶時,我們會執行OAuth,並通過與refresh_token針對我們的谷歌應用(啓用離線訪問)。我打算在他們嘗試使用選取器選擇文件時,使用管理員的access_tokenrefresh-token在其他組用戶的帳戶上。

我做了什麼:

我已經成功地在我的應用程序使用docs提供了基本的代碼集成到谷歌選擇器。然後達到我想要的東西,我刪除以下代碼示例代碼:

gapi.load('auth', {'callback': onAuthApiLoad}); 

function onAuthApiLoad() { 
    window.gapi.auth.authorize(
    { 
     'client_id': clientId, 
     'scope': scope, 
     'immediate': false 
    }, 
    handleAuthResult); 
} 

function handleAuthResult(authResult) { 
    if (authResult && !authResult.error) { 
    oauthToken = authResult.access_token; 
    createPicker(); 
    } 
} 

,取而代之的.setOAuthToken(oauthToken)我通過直接刷新的access_token作爲字符串(我通過ajax調用從服務器獲取)。

.setOAuthToken("<access_token>") 

但每次我打電話picker.setVisible(true);時間我看到一個屏幕的iframe中說爲了選擇從您的在線存儲中的項目,請登錄

enter image description here

問題:

回答

0

嘗試添加sign in listener。聽衆提供了一種自動響應當前用戶登錄會話中的更改的方法。例如,在啓動方法初始化Google Sign-In auth2對象後,您可以設置偵聽器以響應auth2.isSignedIn狀態更改等事件或auth2.currentUser中的更改。

Validating the token可能是每次使用令牌之前的一種可能性,但是每次加載選擇器並在重新驗證後使用令牌調用API端點時,這可能會爲罕見用例增加額外的開銷問題,沒有關於令牌無效的關鍵。您可以通過向Google授權服務器上的端點發出Web服務請求並對該Web服務請求的結果執行字符串匹配來驗證令牌。