Symfony 4 - 用户从外部 API 服务回调时变为空

Symfony 4 - User becomes null on callback from external API service

在 Symfony 4 上,当从任何外部 API 服务(在本例中 - Shopify API)捕获回调路由时,我的登录用户变为 anon.

从任何 API 服务捕获回调路由后,如何获取我的登录用户?我认为这可能是 HTTP 与 HTTPS 或某些 Symfony 设置的问题。


在 Shopify API 控制面板上 - 允许重定向 URL(s):

http://localhost:8000/shopify/callback
https://<myremoteip>.com/shopify/callback

Symfony 控制器路由(用于 Shopify 回调):

/**
* @Route("/shopify/callback", name="shopify_callback")
*/
public function shopify_auth_callback(Request $request)
{
    dd($this->getUser());
}

回调结果(本地主机):

App\Entity\User {#977 ▼
   -id: 103
   -email: "aaaa@gmail.com"
}

回调结果(远程):

null

问题是我在导航到远程 URL 之前创建了一个新会话。

给未来读者的建议 - 确保您始终处于同一个会话中,您可以从请求中获取该会话。

避免这样做:

$session = new Session();

我遇到了同样的问题,但使用的是 Google Oauth 系统。 我刚刚将框架配置中的 cookie samesite 策略从 'strict' 更改为 'lax',它解决了我的问题

现在我可以在 api 重定向后让用户保持登录状态

framework:
  session:
    enabled: true
    cookie_secure: 'auto'
    cookie_samesite: 'lax'
    cookie_lifetime: 86400