问题描述
我正在竭尽全力用Apple来完成Signin的流程-试图在React前端/ PHP后端应用程序上实现它。
我在这里感到困惑的是redirect_uri直接对后端中的端点进行了后期调用。从那里,我该如何处理这些数据,然后在完成后又重新获得反应端的控制权?
解决方法
对不起,我对React一无所知,但是我对Apple Sign In的处理很多。据我了解,该流程应执行以下操作:
- 前端=> Apple(重定向用户以登录Apple)
- Apple接受用户输入,然后将其登录
- Apple =>您的后端(将POST发送到您的服务器,您在其中执行诸如验证
id_token
,将authorization_code
交换为refresh_token
,保存刷新令牌和电子邮件地址等操作) - 您的后端=> Apple(我假设您向Apple返回了回复)
- Apple =>前端(Apple将您的响应返回到前端)
我发现 Apple 的问题是他们正在返回 POST 请求(如果您为 Apple 请求添加范围)。如果您使用的是 SPA (React),则运行 React 的服务器将不会接受 POST 请求,因此如果您的回调 URL 指向您的 React 前端,这将失败。
我认为有两种方法可以解决这个问题:
-
将回调 URL 指向您服务器上的 Web 钩子,该钩子将 HTTP 重定向到您的 React URL(并且只需在查询参数中包含 auth_code 和 id_token)
-
通过将 usePopup 设置为 true(这个库是一个很好的例子:https://github.com/patelmayankce/react-apple-login#readme)在返回之前拦截 Apple POST 请求