如果我正在构建一个使用 Facebook SDK 的 Android 应用程序,并且还有一个具有大部分相同功能的 Web 应用程序,那么 Android 应用程序应该如何处理社交操作?它应该通过 SDK 直接向 Facebook API 发出请求,还是应该通过我自己的 API 发布到网络应用服务器并允许网络应用代表 Android 应用向 Facebook 发出请求?大多数适用于 Android 的 Facebook 示例都使用前一种方法,但没有一个明确讨论当 Web 后端具有与 Android 应用程序相同的社交功能时的最佳实践。
3 回答
我以前一直在考虑类似的问题。这是一个 PHP 应用程序,但本质上设计选择是将 FB 交互放入前端(JS-SDK)或放入后端并代理它(PHP-SDK)。遗憾的是也没有找到太多的指导,所以我不得不自己做决定。
通常似乎没有本身的答案,这取决于您使用 FB 做什么以及它与您的应用程序/webapp/后端所做的任何事情的集成程度。您的 Android 是否更多地是客户端应用程序,还是依赖于网络应用程序通过网络服务提供的其他功能?它是否以某种方式与发送到后端的用户操作集成,或者它只是提供一些额外的噱头(例如“喜欢”按钮,行中的任何内容)您是否使用 SDK 来验证并从 FB 提取用户相关数据(电子邮件, name) 并且这些信息是否在您的后端发挥作用?
在我看来,它归结为以下几点:
与 FB 的直接通信实现起来要简单得多,因为您的应用程序和 FB 之间不会有额外的层,即代理代码等。因此,如果 FB 只是松散耦合,它可能是“足够好”的选项。
从前端到后端修补 FB 可能会令人讨厌 - 特别是如果您想通过 FB 进行身份验证,一开始有点复杂。但是,您将在一个地方拥有所有 FB 逻辑,由 Android-App 和 Webapp 共享,因此以后维护显然更容易,并且可以更好地与后端可能提供的其他交互集成。
希望提供一些价值,也渴望看到其他意见。
好吧,我认为这两种方法都是正确的,但是选择主要取决于您在服务器端已经拥有的内容,以及您是否打算使用来自不同应用程序(如 Android、iOS、Windows Phone 应用程序)的相同功能。在这种情况下,只需在前端获取具有您需要的权限的用户令牌并让 Web 服务器使用该令牌与 facebook 对话是有意义的。您甚至可以为用户保存此令牌,这样他们就不必再次授予权限,例如,如果您有 Web 注册和应用程序注册。在我们的应用程序中,我们使用这种方法,因为基本上有五个前端(Android、iOS、桌面、移动 Web、完整 Web),这样应用程序开发人员只需在该平台上使用 sdk 获取令牌(您必须使用令牌而不是用户名,密码,因为 facebook 的安全规则)。
在我看来,最好为每个给定平台使用可用的 SDK/API,而不是尝试编写自己的集中化并使用单个库。由于您对 Android 应用程序应如何处理社交互动特别感兴趣,因此我建议您使用 Facebook SDK for Android。
虽然随着平台列表的增加,它确实增加了您必须维护的代码的大小以及您必须学习的 SDK/API,但这种方法最重要的因素是用户体验。通过坚持使用本机库,并随着这些库的发展不断发展您的应用程序,您将为您的用户提供他们最有可能习惯的体验。他们不必学习如何使用您的应用程序,但能够使用他们习惯使用的控件发布帖子、更新他们的状态并查看他们的朋友列表。此外,您将能够利用特定的平台功能(在移动案例中,例如以推广您的应用程序的方式将您的应用程序发布到用户提要:https ://developers.facebook.com/docs/tutorials /androidsdk/3.0/games/feed/ )