用苹果登录并做出反应

问题描述

我正在竭尽全力用Apple来完成Signin的流程-试图在React前端/ PHP后端应用程序上实现它。

在这里感到困惑的是redirect_uri直接对后端中的端点进行了后期调用。从那里,我该如何处理这些数据,然后在完成后又重新获得反应端的控制权?

解决方法

对不起,我对React一无所知,但是我对Apple Sign In的处理很多。据我了解,该流程应执行以下操作:

  1. 前端=> Apple(重定向用户以登录Apple)
  2. Apple接受用户输入,然后将其登录
  3. Apple =>您的后端(将POST发送到您的服务器,您在其中执行诸如验证id_token,将authorization_code交换为refresh_token,保存刷新令牌和电子邮件地址等操作)
  4. 您的后端=> Apple(我假设您向Apple返回了回复)
  5. Apple =>前端(Apple将您的响应返回到前端)
,

我发现 Apple 的问题是他们正在返回 POST 请求(如果您为 Apple 请求添加范围)。如果您使用的是 SPA (React),则运行 React 的服务器将不会接受 POST 请求,因此如果您的回调 URL 指向您的 React 前端,这将失败。

我认为有两种方法可以解决这个问题:

  1. 将回调 URL 指向您服务器上的 Web 钩子,该钩子将 HTTP 重定向到您的 React URL(并且只需在查询参数中包含 auth_code 和 id_token)

  2. 通过将 usePopup 设置为 true(这个库是一个很好的例子:https://github.com/patelmayankce/react-apple-login#readme)在返回之前拦截 Apple POST 请求