带有服务器端组件的Android应用程序应该直接访问Facebook吗?

如果我正在构build使用Facebook SDK的Android应用程序,并且具有大部分相同function的Web应用程序,那么Android应用程序应该如何处理社交操作? 是否应该直接通过SDK向Facebook API发出请求,还是应该通过我自己的API发布到Web应用服务器,并允许Web应用代表Android应用向Facebook发送请求? 大多数Facebook for Android示例使用前一种方法,但是当存在具有与Android应用程序相同的社交function的web后端时,没有明确讨论最佳实践。

我以前一直在把我的想法变成类似的问题。 这是一个PHP应用程序,但本质上,deviseselect是将FB交互放到前端(JS-SDK)或后端并代理它(PHP-SDK)。 可悲的是,也没有find太多的指导,所以我不得不做出自己的想法。

像往常一样,似乎没有每个答案,这取决于你在做什么FB和多深入它融入到任何你的应用程序/ Web应用程序/后端正在做的事情。 您的Android是否更多是客户端应用程序还是依靠Web应用程序通过Web服务提供的其他function? 它是否以某种方式集成到分派到后端的用户操作,还是只是提供一些额外的噱头(例如,“喜欢”button,任何事情都行)您是否使用SDK来validation和从FB(电子邮件,名称),这些信息在你的后端扮演了一个angular色吗?

正如我所看到的,它归结为以下几点:

与FB的直接通信要简单得多,因为你的应用程序和FB之间不会有额外的层,即代理代码等等。所以如果FB只是松耦合,那么可能就是“足够好”的select。

将FB从前端修补到后端可能会变得很糟糕 – 特别是如果你想通过FB进行身份validation,那么起初它有点复杂。 但是,所有FB逻辑都在一个地方,由Android-App和Webapp共享,因此明显更容易维护,并且更好地与后端可能提供的其他交互进行集成。

希望提供一些价值,也希望看到别的意见。

那么我认为这两种方法都是正确的,但select取决于你已经在服务器端已经有的东西,如果你打算从不同的应用程序,如(Android,iOS,Windows Phone应用程序)使用相同的function。 在这种情况下,只需在前端获得所需权限的用户令牌,然后让Web服务器使用该令牌与Facebook进行对话即可。 你甚至可以为用户保存这个令牌,以便他们不必再次给予权限,例如,如果你有networking注册和应用程序注册。 在我们的应用程序中,我们正在使用这种方法,因为基本上有五个前端(Android,iOS,桌面,移动Web,完整Web),这样应用程序开发人员只需在平台上使用sdk获得令牌(您必须使用令牌而不是用户名,因为facebook安全规则的密码)。 另一方面,如果所有Facebook通信只用于您的应用程序,并且服务器不需要了解太多,则可以在应用程序中添加api调用。

在我看来,最好是为每个给定的平台使用可用的SDK / API,而不是试图编写自己的集中化并使用单个库。 由于您特别关注Android应用程序如何处理社交互动,因此我build议您使用适用于Android的Facebook SDK。

虽然它增加了必须维护的代码的大小,并且随着平台列表的增加,您必须学习SDK / API,但这种方法最重要的因素是用户体验。 通过坚持使用本地库,随着这些库的发展,增加您的应用程序,您将为用户提供最可能习惯的体验。 他们不必学习如何使用你的应用程序,但将能够发布post,更新他们的状态,并使用他们习惯使用的控件来查看他们的朋友列表。 此外,您将能够利用特定的平台function(在移动应用中,例如,以促进应用的方式将您的应用发布到用户提要): https : //developers.facebook.com/docs/tutorials /androidsdk/3.0/games/feed/ )