3

Google Cloud Endpoints具有自己的身份驗證過程,其中後端端點方法僅傳遞com.google.appengine.api.users.User對象。是否可以使用通過Google+ Domains API進行身份驗證的Google Cloud Endpoints?

https://cloud.google.com/appengine/docs/java/endpoints/auth

藉助Google+ API域指定爲了得到com.google.api.client.auth.oauth2.Credential對象自身的認證過程。這允許構建com.google.api.services.plusDomains.PlusDomain對象。

https://developers.google.com/+/domains/authentication/

你將如何整合這兩個認證過程?這適用於帶有Google App Engine(Java)後端的網絡應用程序(Java Script)。

在理想情況下,我希望能夠在用戶離線時通過我的JS應用程序檢索用戶生物/配置文件基本信息。

使用案例:我有一條評論線索,其中每條評論都有一個作者作爲com.google.appengine.api.users.User對象存在於Google數據存儲區中。但是,當我在我的JS Web應用程序中呈現註釋線程時,我想爲每個作者顯示一個配置文件圖片。如果我可以通過網絡應用程序撥打電話來爲每個評論者取回生物,我可以爲後端節省很多工作。 Web應用程序會將用戶對象設置爲JSON。其中包括用戶標識和電子郵件。

+1

你可以在你的用例上添加一些細節嗎?通常情況下,您會將用戶對象傳遞給端點,然後在識別用戶時,在端點上使用代表此用戶的服務帳戶。 –

+0

@NikitaUchaev我有標準的端點驗證設置。像你說的那樣傳遞用戶對象。想爲用戶獲取生物。你是什​​麼意思「代表這個用戶的服務賬戶」?你能鏈接一些代碼或文檔嗎? –

+0

@NikitaUchaev我明白你的意思是不清楚的問題。我更新了這個問題。希望有所幫助。 –

回答

3

所以,你的用例是:

  • 您的用戶進行身份驗證您的應用程序,授予獲得您的終端正確地接收com.google.appengine.api.users.User對象所需的基本userinfo.profile範圍API
  • 你堅持下去,這些用戶對象的數據庫,當你找回他們,以顯示他們的評論線程,你想打的谷歌+ API people.get method一個調用來檢索他們的頭像圖片URL

解決辦法:如果你的除了常規端點「userinfo.profile」範圍之外,還向用戶提供了一個oauth流程,該流程允許Google + API調用the scope requiredprofile範圍),因此調用Google+ API無論如何都不成問題,可以從JS客戶端或Java後端,使用Google API客戶端庫後,通過該流程獲取憑據。

爲了避免每次重新驗證它們,您應該serialize and store a credentials object from the language in question,或者您甚至可以簡單地跟蹤刷新令牌的授權,並通過低級別的OAuth舞蹈獲得新的訪問令牌(您可能會想要做前者,因爲它爲你做了這件事)。

如網絡上的elsewhere(在其他幾個地方也是如此),用戶標識from the User object與Google+個人資料ID不同,所以在使用端點方法參數User對象時請注意。因此,您將無法使用User對象中的用戶標識調用people.get

相反,您應該在用戶的第一個signed-in或至少經過授予必要的Google+範圍的oauth流程的同時存儲用戶的Google+個人資料ID,以及您已使用的用戶對象。從數據存儲中的每個用戶數據模型中檢索Google+個人資料ID後,您必須使用(de)序列化憑證對象或刷新/訪問令牌來調用Google+ API(無論您使用哪種解決方案(從數據存儲到SQL,等等)

+1

感謝您提及Google+個人資料ID與用戶的Google帳戶ID不同。 –

相關問題