如果我使用他们的 API,我如何反映某些外部来源(例如:Facebook、LinkedIn 等)的用户数据的变化?

Posted

技术标签:

【中文标题】如果我使用他们的 API,我如何反映某些外部来源(例如:Facebook、LinkedIn 等)的用户数据的变化?【英文标题】:How do I reflect changes in user data of some external source (eg: Facebook, LinkedIn etc) if I'm using their API? 【发布时间】:2015-01-14 16:39:47 【问题描述】:

所以我使用 LinkedIn 的 API 作为用户在我的 android 应用上登录的一种方式,但我认为这个问题可以推广到任何社交网络的 API 的使用,并且也不是真正特定于 Android 的。总之……

当我调用 LinkedIn 的 API 时,我会在他们登录后获得一些用户数据——特别是他们的姓名、电子邮件、技能、个人资料描述等。我知道当用户在 LinkedIn 上编辑他的个人资料时,其中一些数据可能会发生变化网站(例如,添加新技能)。

现在,我希望这些更改尽快反映在我的应用中。我能想到的就是在每次用户返回应用程序时简单地调用 API,获取数据并将其替换为我上次调用时存储的任何内容。

但这似乎有问题,因为对于许多用户来说,他们可能很少对他们在 LinkedIn 上的个人资料进行任何更改......所以每次用户打开应用程序时拨打电话似乎都是浪费时间。但是,如果我以更大的间隔(比如每隔几天)打一次电话,那么我就有可能无法反映某些人可能做出的任何改变。

所以我想知道是否有任何替代解决方案来解决所有这些问题。像 Facebook、Twitter、LinkedIn 和其他社交网络这样的 API 是否有方法通知更改(或者是否有其他库具有此功能)?

【问题讨论】:

【参考方案1】:

Facebook 确实有您正在寻找的东西:https://developers.facebook.com/docs/graph-api/reference/v2.2/app/subscriptions/

您可以选择订阅对 User 对象的更新,他们会调用您提供给他们的端点,只要发生变化。

据我所知,LinkedIn 不提供类似的功能。但是,当您打开应用程序时,我不会对拨打此电话过于强调。检索少量数据只是一个调用。当然,您需要确保应用在调用失败时不会加载失败 - 您只是希望这意味着信息没有更新。

应用程序是独立的,还是有服务器组件?另一种选择是让服务器代表用户进行此调用。

【讨论】:

现在我没有服务器组件,但如果我有,它会如何改变 - 我每次进入应用程序时仍然需要调用我的服务器,对吧?或者有什么方法可以让服务器在发现LinkedIn站点上所做的更改时向应用程序发送数据,并在本地应用程序上实现某种后台服务来监听服务器发送数据?但话又说回来,就资源而言,这似乎比每次使用应用程序时都调用 LinkedIn 的 API 要昂贵得多。我只是想了解开发人员通常是如何真正解决这个问题的。 就像你说的,运行一个监听更新的后台服务可能会贵很多。我认为在加载应用程序时调用 LinkedIn 的 API 不会太贵。我只是建议在 UI 线程之外的线程中进行调用,并且就像我之前所说的那样,优雅地处理它的失败。

以上是关于如果我使用他们的 API,我如何反映某些外部来源(例如:Facebook、LinkedIn 等)的用户数据的变化?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 如何在使用外部 API 创建时保存数据?

来自除 localhost 之外的每个来源的 CORS 策略阻止的对外部 API 的 HTTP 请求

如何使用模拟的 graphql API 和外部服务的 GraphQL 端点

如何从外部登录网站?

验证API响应完整性

如何修复错误“加载资源失败:访问控制允许来源不能包含多个来源”