2

我使用 ServiceStack 已经有一段时间了,我喜欢它。但有一件事我想不通。假设使用我的 servicestack 端点的应用程序(ios、android 等)如何使用 facebook 端点“/auth/facebook”?从浏览器中使用此 url“/auth/facebook”时,它工作正常,但响应是 html,而不是 AuthResponse og 可序列化的东西。

此端点是否只能在具有相同解决方案中的 servicestack 的网站上使用?

4

1 回答 1

2

这些东西的工作方式是使用与您的应用程序匹配的 API 密钥将用户重定向到 Facebook。然后用户告诉 Facebook 你的应用没问题,Facebook 将他们重定向回来。这只能通过浏览器完成。你真的有两种选择来解决这个问题:

  • 让用户使用网站向 Facebook 进行身份验证,然后使用来自应用程序的凭据对您的用户进行身份验证。

  • 使用内置的 iOS Facebook 东西并将生成的身份验证令牌发送到应用程序上的端点,您可以将它们保存以供以后使用。

编辑,再澄清一点:

选项1

  1. 用户访问您的网站
  2. 用户点击您的 Auth With Facebook 按钮
  3. 向用户发送您在 Service Stack 中设置的 Facebook 端点
  4. 用户被 Service Stack 重定向到 Facebook
  5. 用户从 Facebook 被重定向回服务堆栈,并在 url 中使用令牌
  6. 您将令牌保存在数据库中并告诉用户他们现在可以通过 Facebook 使用您的应用程序。

选项 1.5

与选项 1相同,但不是让用户通过他们的浏览器,而是创建一个UIWebView控件并将其指向您的 Facebook Auth 端点。然后,您收听来自您的站点的响应,该响应说用户已通过身份验证。我不是一个客观的c,所以我真的无法更详细地了解如何做到这一点。

选项 2

  1. 使用 iOS Facebook API 并处理身份验证,如此处所示
  2. POST通过自定义端点到服务堆栈的凭据
  3. 将凭据保存在数据库中,并在将来使用它们代表用户进行调用。

Facebook 登录需要某种浏览器,因为 Facebook 的 cookie 必须与授权您的网站的请求一起传递。这就是 Facebook 如何知道哪些用户想要授权您的网站,以及他们是提出请求的人。

于 2013-05-13T14:50:46.013 回答