【问题标题】:Should Android apps with a server side component access Facebook directly?带有服务器端组件的 Android 应用程序是否应该直接访问 Facebook?
【发布时间】:2013-05-20 18:46:35
【问题描述】:

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

【问题讨论】:

  • 不会通过您的网络应用程序路由用户数据违反 Facebook 的政策:“您不得包含代理、请求或收集 Facebook 用户名或密码的功能。”如果是这样,那么所有其他考虑因素都将是没有实际意义的。
  • 不,我想我还不够清楚。我的意思是通过向myserver/friends.php 发出请求并使用输出而不是使用本机Android 库来代理诸如获取用户的朋友列表之类的事情。根据 Facebook 示例,这种代理方法似乎是允许的。
  • 您不能询问或保存密码。代理意味着获取用户密码并将其发送到 FB。您必须使用 FB auth 对话并获得一个令牌,该令牌允许您代表用户发出请求,您甚至可以存储该令牌以供以后使用(但它会在一段时间后过期)

标签: android facebook facebook-android-sdk


【解决方案1】:

我之前一直在考虑类似的问题。这是一个 PHP 应用程序,但本质上,设计选择是将 FB 交互放入前端(JS-SDK)或放入后端并代理它(PHP-SDK)。遗憾的是也没有找到太多指导,所以我不得不自己决定。

通常似乎没有本身的答案,这取决于您使用 FB 所做的事情以及它与您的应用程序/webapp/后端所做的任何事情的集成程度。您的 Android 是否更多地是客户端应用程序,还是依赖于网络应用程序通过网络服务提供的其他功能?它是否以某种方式与发送到后端的用户操作集成,或者它只是提供一些额外的噱头(例如“喜欢”按钮,行中的任何内容)您是否使用 SDK 来验证并从 FB 提取用户相关数据(电子邮件, name) 并且这些信息是否在您的后端发挥作用?

在我看来,它归结为以下几点:

与 FB 的直接通信实现起来要简单得多,因为您的应用程序和 FB 之间不会有额外的层,即代理代码等。因此,如果 FB 只是松散耦合,它可能是“足够好”的选项.

从前端到后端修补 FB 可能会令人讨厌 - 特别是如果您想通过 FB 进行身份验证,一开始它有点复杂。但是,您将把所有 FB 逻辑放在一个地方,由 Android-App 和 Webapp 共享,因此以后维护显然更容易,并且可以更好地与后端可能提供的其他交互集成。

希望提供一些价值,也渴望看到其他意见。

【讨论】:

    【解决方案2】:

    嗯,我认为这两种方法都是正确的,但选择主要取决于您在服务器端已经拥有的内容,以及您是否计划从不同的应用程序(如 Android、iOS、Windows Phone 应用程序)中使用相同的功能。在这种情况下,只需在前端获取具有您需要的权限的用户令牌并让 Web 服务器使用该令牌与 facebook 对话是有意义的。您甚至可以为用户保存此令牌,这样他们就不必再次授予权限,例如,如果您有 Web 注册和应用程序注册。在我们的应用程序中,我们使用这种方法,因为基本上有五个前端(Android、iOS、桌面、移动 Web、完整 Web),这样应用程序开发人员只需在该平台上使用 sdk 获取令牌(您必须使用令牌而不是用户名,密码,因为 facebook 的安全规则)。另一方面,如果所有 Facebook 通信仅在您的应用内部使用,并且服务器不需要了解太多,则将 api 调用放入应用中。

    【讨论】:

      【解决方案3】:

      在我看来,最好为每个给定平台使用可用的 SDK/API,而不是尝试编写自己的集中化并使用单个库。由于您对 Android 应用应如何处理社交互动特别感兴趣,因此我建议您使用 Android 版 Facebook SDK。

      虽然随着平台列表的增加,您必须维护的代码和必须学习的 SDK/API 确实会增加,但这种方法最重要的因素是用户体验。通过坚持使用本机库,并随着这些库的发展发展您的应用程序,您将为您的用户提供他们最有可能习惯的体验。他们不必学习如何使用您的应用程序,但能够使用他们习惯使用的控件发布帖子、更新他们的状态并查看他们的朋友列表。此外,您将能够利用特定平台功能(在移动案例中,例如将您的应用发布到用户供稿以推广您的应用:https://developers.facebook.com/docs/tutorials/androidsdk/3.0/games/feed/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-21
        • 2016-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-21
        • 2014-03-30
        • 1970-01-01
        相关资源
        最近更新 更多