簡體   English   中英

在Google App Engine上,我可以使用Android的AccountManager關聯Google OAuth 2令牌和SACSID令牌嗎?

[英]On Google App Engine, can I relate a Google OAuth 2 Token and a SACSID token I got using Android's AccountManager?

我正在編寫一個Google App Engine應用程序以及一個CLI客戶端,一個Android客戶端和一個Javascript客戶端。 此應用程序的目的是允許用戶通過CLI或Javascript客戶端控制安裝了Android客戶端的Android手機。

身份驗證起着至關重要的作用,因為錯誤可能允許惡意用戶控制其他人的手機。

Android客戶端是編寫和工作的。 它使用此方法對用戶進行身份驗證。 基本上,這給了我一個所謂的SACSID令牌,我可以存儲在cookie中。 設置此cookie后,App Engine會識別我的用戶。 然后,服務器應用程序可以調用UserService以獲取要調用getUserId()的用戶。 getUserId()返回一個標識我的用戶的不透明字符串。 到現在為止還挺好。

現在我正在編寫JS和CLI客戶端。 由於CLI客戶端沒有顯示CAPTCHA或打開瀏覽器的可靠方法,我認為它需要使用Device API (“客戶端登錄”不是一個選項)。 此API需要使用OAuth 2進行身份驗證。 此外,我希望JS客戶端訪問用戶的聯系人,這似乎也表明OAuth 2適合。

如果我的用戶使用OAuth 2進行身份驗證,我是否會以某種方式將此Google OAuth 2令牌轉換為Android客戶端連接時獲得的相同opaque字符串? 如果沒有,我可以修改我的Android應用程序,以便它使用OAuth而不是Sacsid令牌嗎?

更具體地說,我看到有三件事可以解決我的問題:

  1. 從帳戶管理器獲取OAuth 2令牌的方法
  2. 一種為SACSID令牌交換OAuth 2令牌的方法
  3. 使用SACSID令牌和OAuth2獲取相同的不透明UserID的方法,但前提是我可以在同一個應用程序上同時擁有兩個身份驗證系統。

與第三種可能解決方案類似的東西是從OAuth和SACSID令牌中獲取用戶的電子郵件地址,並將其用作用戶ID。 這對我來說看起來有點笨拙:

  • 每當我收到OAuth 2請求時,我都需要調用Google API來檢索用戶的電子郵件地址(或構建我自己的令牌系統,這似乎是不安全的,並引入了許多其他困難)。
  • 給定用戶的電子郵件地址可能會發生變化,使我失去用戶與其先前數據之間的關聯。

改為使用終點:

https://developers.google.com/appengine/docs/java/endpoints/

他們使用oauth2,它們易於實現並且支持android IOS和Web。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM