2012-05-10 48 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