幾個月前我從Google App Engine遷移出去。但是我仍然依靠它進行身份驗證,因爲我的用戶在GAE上通過其user_id屬性進行標識。將用戶從Google App Engine遷移到Google OpenID
爲此,我的(現在是外部的)應用程序使用加密,簽名和時間戳登錄請求將用戶重定向到Google App Engine應用程序。 GAE應用程序然後使用GAE的「用戶」服務執行登錄。在GAE上成功登錄後,用戶將再次使用加密的,帶符號和時間戳的響應重定向到我的外部應用程序。 基本的實現可以找到here和here。正如你所看到的,這是非常基本的,並且依賴於沉重的加密導致性能不佳。
我的外部應用程序(在本例中爲Django應用程序)將user_id存儲在用戶表的密碼字段中。除了user_id之外,我只能從GAE獲取電子郵件地址,以在Django中存儲用戶名和電子郵件。
現在我想刪除對GAE服務的依賴。想到的第一種方法可能是向每個用戶發送一封電子郵件,要求他設置一個新密碼,然後使用Django執行我自己的認證。
我更喜歡依靠Google的OpenID服務的解決方案,這樣用戶實際上沒有區別。這也是首選,因爲我需要將用戶發送給Google,以獲取Google Calendar API的AuthSub令牌。
問題是,我找不到一種方法可以在不使用GAE的情況下獲取給定Google帳戶的GAE user_id屬性。 OpenID和所有其他身份驗證協議使用不同的標識符。
所以,現在的問題是:Google是否提供了我可以用於此目的的API,但我還沒有看到?有沒有其他可能的解決方案或想法如何遷移用戶帳戶?
在此先感謝!
感謝您的回覆。與此相關的問題是,用戶可能在此期間更改了他的電子郵件地址,例如,從非gmail地址轉換爲gmail或另一個非gmail地址。我之前遇到過這種情況,必須手動提供一種方式讓用戶與我聯繫並重新鏈接其舊帳戶和相關數據。 user_id是一個永不改變的靜態標識符,我真的很想確保沒有人被拋在後面。 – mback2k 2012-04-04 14:34:49