在开始之前,我知道问题的范围可能过于宽泛,但我认为讨论策略适合这个网站。
说实话,我想构建一个从各种社交网络中提取数据的移动应用。
当然,这要求我能够登录每个服务并拥有一个适用于我的平台的API /库,即 Windows Phone 8.1 ,除非所有内容都已完成在线服务。
我正在思考如何使一切运转起来,我提出了两个想法:
这是我想要使用的社交网络的当前情况:
+----------------+---------------------------------+--------------------------------------------------------------------+
| Social Network | Windows Phone | Azure |
+----------------+---------------------------------+--------------------------------------------------------------------+
| Facebook | http://facebooksdk.net/ | login supported |
| Twitter | http://tweetinvi.codeplex.com/ | login supported |
| Instagram | http://instasharp.org/ | not supported |
| Foursquare | SharpSquare can be adapted | https://gist.github.com/rfaisal/9899185#file-login-js may work (?) |
| Flickr | https://flickrnet.codeplex.com/ | not supported |
+----------------+---------------------------------+--------------------------------------------------------------------+
现在,虽然 Windows Phone 似乎是最好的,但这将迫使我处理不同的登录工作流程,并且如果其中一个服务的API发生变化,可能会出现问题,因为我需要更新应用程序并使其与新API一起使用,假设这些库背后的开发人员也决定更新它们!
使用 Azure 只需要单个服务器端更新,使其更易于管理,并且还有助于管理用户的异构数据,因为我可以在线解析它们,我可以以所有服务之间通用的格式返回它们(减少设备用于下载服务&API中包含的无用内容的带宽)。
我还调查了其他内容,我发现 Auth0 这似乎是一项很好的服务,但他们不支持 Foursquare / Flickr 并且免费帐户太有限了。
我找到的另一项很酷的服务是https://intridea.github.io/omniauth/
说实话,我对这两种方式都有很多怀疑,这引出了我们真实的问题:
鉴于我想要使用的所有服务都基于 oAuth2 + REST API,您将如何使其工作?让一切都在服务器端完成是否更好,或者可以让同一个应用程序直接登录到设备上的每个服务器?尽管您有选择,您将如何保存用户的登录信息?
由于这个问题对很多不同类型的答案都是开放的,我会提出每个有用的答案,并且我会接受一个让我更容易使用的答案。