2016-07-14 48 views
1

目前我正在實施一個Ionic應用程序,前端位於移動設備上,後端位於服務器上。 (因此,設備和服務器之間存在連接延遲)。我的應用程序通過連接到Google API來使用Google服務(如Gmail,日曆等)。有什麼方法可以將客戶端和服務器端Google API身份驗證結合起來?

  1. 目前的架構是:

    設備< ==>服務器< ==>谷歌API

    這是使用的OAuth 2.0服務器端驗證。它可以工作,但連接延遲太長,感覺回到撥號互聯網連接時。

  2. 我試圖使用OAuth 2.0客戶端驗證,這就是:

    設備< ==>谷歌API

    這是快,但它有2個問題:

    1. 即使Ionic將前端代碼打包到應用程序中,我仍然擔心規則「前端中的所有內容都對每個人都可見」。 (沒有找到證據來證明或不贊成這個假設)
    2. Google API OAuth 2.0只向客戶端身份驗證發出流量,並且流量經常過期,我不希望用戶再次授予權限。

所以,我想知道是否有可能做到以下幾點:

  • 使用服務器端身份驗證存儲密鑰/憑證(我使用Django的背結尾,這是Python),前端從服務器獲取密鑰/憑證,並使用JavaScript代碼繼續使用Google服務。
+0

任何人都可以給我一個建議?將欣賞 – CarsonChen

回答

0

我知道這是派對的遲到,但我現在正在經歷這個。我認爲有兩種方法可以設置,但都不是完美的。

  1. 使用服務器端流程授權您需要在服務器或客戶端上的所有範圍。當獲得令牌時,將其傳遞給客戶端。不利的一面是客戶端現在有一個令牌可以訪問比需要更多的API。
  2. 爲客戶端和服務器創建單獨的授權流程。這意味着用戶有2個授權提示,這是不好的。這種方法的好處是,你可以確保客戶端具有有限的範圍,但服務器仍然可以處理更大的任務(移動硬盤文件,發送電子郵件等)

在我的情況下,客戶端將只需要讀取聯繫人API,而服務器需要完整的驅動器訪問權限。

如果有人發現組合方式,只需要1個授權,但客戶端和服務器有獨立的範圍,那將是理想的情況。

相關問題