2012-07-17 26 views
9

对于我需要开发的应用,我需要能够使用SyncAdapter同步Gmail和Facebook数据。我希望与当地的Facebook和Gmail应用程序(如果有的话)同步,而不是他们的远程服务器。与本地应用同步意味着更少的电池使用,更少的网络使用,更快的同步等。当然,如果需要,我会设置正确的权限。使用SyncAdapter与* local * gmail和facebook应用数据同步

我的问题

  • 如果任何应用程序(的Gmail/Facebook的)都是可用的,是它可以查询他们的数据(消息,事件等)?
  • 如果没有,是否有可能从他们那里获得身份验证令牌(或任何类型的凭据),这将允许我查询服务器,而无需用户再次输入每个用户名和密码?
  • 如果可能,是否也可以在Facebook或Gmail应用程序同步后立即自动同步,以便我可以在收到新数据后立即获取新数据?

如果这些都不可用,我想我需要自己提取数据,所以这与这个问题无关。

回答

3

我不能说Facebook的连接,但Gmail应用程序不允许这么做。它以前曾经工作过,但是之后他们已经确保它只有Google应用可以查询电子邮件内容提供商。您可以做的最好的方式是获取labels API的邮件数量。您可以使用标准的Android AccountManager获取Google服务的身份验证令牌(ClientLogin或OAuth2)。然后您必须使用它连接到特定的API以获取实际数据。

+0

我可以用这个OAuth2令牌做什么事情?另外,谷歌如何有这么多服务,我可以使用,但Gmail不是他们的一部分? – 2012-08-03 09:22:51

+0

GMail至少有一个您可以使用OAuth令牌获得的RSS接口。也可能有其他的API,你应该研究它。有机会,您可以使用令牌对Google提供的任何内容进行身份验证。 – 2012-08-03 13:49:31

+0

但我可以读取所有消息,包括那些被读取的消息吗? – 2012-08-03 14:02:22

2

啊,现在我已经更好地理解了你的问题。我不认为有什么方法直接从应用程序的本地副本中获取您感兴趣的数据。这是一个有趣的想法,对于您建议的速度/空间/带宽原因而言是合理的,但是需要来自当前不可用的应用程序的重要支持。

试图避免用户重新输入密码也是几乎可以肯定仍然是不可能的,即使应用程序确实支持共享本地数据。毕竟,GMail应用程序如何验证您的应用程序是否应该有权读取其所有数据?大概通过提示你的GMail用户名和密码。仅仅使用相同的设备并不意味着完全的信任。

使用SyncAdapter并存储示例项目中演示的身份验证令牌,您应该能够限制用户输入一次凭据,但这是关于您将能够执行的最佳操作。


以前:

你吃过看看SampleSyncAdapter包含SDK?

These instructions快速浏览如何访问样本。

如果您使用的是Eclipse,那么他们在那里建议其实更容易。要获得示例项目:

  1. 选择File>New>Other...
  2. 选择Android>Android Sample Project
  3. 随意选择目标/ API级别适用于您的项目(可能是最新的)
  4. 选择示例您感兴趣的项目,SampleSyncAdapter在这种情况下

该示例项目是一个很好的示例使用SyncAdapters并应容易适应透过Gmail,Facebook等

+0

可悲的是,是的,我已经尝试过了,我已经看到,不仅它要求用户名和密码(即使我有Gmail),但也没有成功登录(我输入正确的用户名和密码),并向我展示它可以做的任何事情。我也不认为它可以做任何与Gmail的消息,只有联系人(根据清单)。 – 2012-07-27 06:43:18

+0

@androiddeveloper现在更新,我更好地理解你的问题。请注意,默认情况下,SyncAdapter不会连接到GMail,而是连接到某些专用的SyncAdapter服务。你将不得不改变它与GMail一起工作。这可能是它为什么不适合你的原因。 – blahdiblah 2012-07-28 03:06:56

+0

你是在谈论样本还是关于帖子的问题?在任何情况下,样本如何在没有任何变化的情况下工作,他们怎么不写下应该改变的东西?我也不明白,我怎么可能找不到一个适合Gmail或Facebook的体面教程,因为它们被认为非常受欢迎。 – 2012-07-28 07:35:42