2012-05-10 120 views
7

我正在爲我的應用實施同步適配器,以便與appengine後端同步。在appengine上,我使用內置的User api進行身份驗證。有一篇文章HERE說明如何做,但該應用程序列在gmail帳戶下。理想情況下,我的應用程序將在帳戶中列出。我不想要求用戶輸入用戶名和密碼,只需使用現有的Google帳戶進行身份驗證即可。有沒有人做過這個?帶有appengine Google用戶帳戶的Android同步適配器

更新: 我一直在努力,看起來我可以實現AuthenticationService並存儲用戶帳戶名並將密碼保留爲空字符串。在getAuthToken()方法中,我應該能夠簡單地返回google身份驗證令牌。一旦我得到進一步發佈...

回答

3

也許你誤解了Android帳戶系統。當你去設置 - >賬戶&同步並添加一個新的賬戶你看到的是一個賬戶列表類型。賬戶類型和應用通常有關係,例如Facebook賬戶與Facebook一起使用。一般來說,如果你如果我理解正確的話,你使用谷歌賬戶,但希望它出現作爲自己的帳戶類型已辦理認證等

不同的後端系統,您將添加一個新的賬戶類型。這聽起來不對。您將最終重新實施Google帳戶處理,但價值不大。我相信,如果您只是搭載Google爲您提供的內容,則對用戶來說更簡單。點擊帳戶時可以看到您的應用/服務/內容提供商。例如,在installing "Tasks" by "Team Task"(免責聲明:我不隸屬於該公司)之後,他們將「同步任務」添加到數據列表&同步選項。

但是,如果您確實想創建自己的帳戶類型,請按照示例Sample Sync Adapter。查找Authenticator代碼和相關資源(例如清單,活動佈局等)。

+0

我明白你在說什麼,但我會同步數據特定於我的應用程序和用戶帳號。將「同步任務」放在Google帳戶下是有道理的,因爲它是正在同步的谷歌數據。我使用谷歌帳戶登錄和帳戶用戶名的目的,因爲用戶不需要記住另一個密碼,它減少了我的工作量 – Patrick

+0

我仍然認爲最好是添加您的應用程序的數據作爲用戶的谷歌帳戶的一部分。但是,由於您不同意可以爲您的應用程序實現自定義身份驗證器。它是由下面的示例同步適配器例子,使用谷歌帳戶作爲服務器端(或者,也許它可以使用你的AppEngine上作爲授權的中介)相當容易。樣本同步適配器身份驗證程序也使用appengine作爲後端,使您在那裏更容易。 – andyandy

2

這確實是可能的,我已經實現了這個成功,但被警告這有點頭疼。

有可用的優秀教程叫writing-an-android-sync-provider-part-1

...不要忘記檢查在part 2

除此之外跟進也有叫SampleSyncAdapter這是Android SDK的樣品中的例子在我的發展中是無價的。

隨着一點點的努力和大量的咖啡,你應該能夠得到這個工作;)

+0

我已經想通了自己的,但仍然有一些東西需要解決。我已經在我的應用程序中設置了Google帳戶的身份驗證,所以我實際上不需要在AuthenticationService中實現getAuthToken和其他方法。我基本上只是想使用syncadapter功能...有任何代碼可以從認證服務共享?您是如何在您的應用中添加帳戶的? – Patrick

+0

所有的代碼都在我鏈接到答案的SampleSyncAdapter示例代碼中。我把它分解成基本的東西(並打破了幾次),然後將它插入我的代碼中。一個有用的提示,雖然...有一個小的XML文件,這個東西需要你可以在示例項目中找到...確保你把它放在你的XML文件夾中...... neraly瘋了試圖解決這個問題;) – Merlin

+0

這篇文章可能也有用[連接點與android-syncadapter](http://ericmiles.wordpress.com/2010/09/22/connecting-the-dots-with-android-syncadapter/) – Merlin