OAuth2 Symfony Api邮递员未通过警卫验证器

OAuth2 Symfony Api邮递员未通过警卫验证器,api,symfony,postman,guard,authenticator,Api,Symfony,Postman,Guard,Authenticator,我正在用Symfony构建一个API,并添加了OAuth身份验证来保护API。 但是,当我使用Postman测试API并尝试获取新的访问令牌时,Postman不会通过guard验证器获取令牌,并且不会返回任何令牌,并且用户没有连接 但是,当我使用前端进行测试时,我访问这个要连接的路由(localhost:8000/api/connect/github),然后访问这个路由以获取令牌(localhost:8000/api/access\u token/github),用户已连接,我可以在这里看到令

我正在用Symfony构建一个API,并添加了OAuth身份验证来保护API。 但是,当我使用Postman测试API并尝试获取新的访问令牌时,Postman不会通过guard验证器获取令牌,并且不会返回任何令牌,并且用户没有连接

但是,当我使用前端进行测试时,我访问这个要连接的路由(localhost:8000/api/connect/github),然后访问这个路由以获取令牌(localhost:8000/api/access\u token/github),用户已连接,我可以在这里看到令牌,但不能在postman上看到

这里是我用来连接用户与OAuth(在我的SecurityController中)的两条路由:

在我的验证器中,我使用了以下两种方法来获取令牌并通过会话和头传递它:

public function getCredentials(Request $request)
{
    $accesstoken = $this->fetchAccessToken($this->getClient());
    $request->headers->set("Access Token", $accesstoken);
    return $accesstoken;
}

public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $providerKey)
{
    $request->getSession()->set("Access Token", $request->headers->get("Access Token"));
    return null;
}
因此,在来自SecurityController的accessToken方法中,我尝试在请求头中获取令牌。它应该会给我这样的回报:
{“访问令牌”:“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”}

但在《邮递员》中,它却给了我这样的回复:

{“访问令牌”:null}

所以我猜邮递员没有通过验证器,但我不明白为什么,你们有什么解释吗


非常感谢

我的猜测。看起来第一个
/api/connect/github
端点将一些有价值的数据放入会话,而
/api/access\u token/github
从会话获取此信息。为了识别当前用户是您,您的代码可能会将一些数据设置到浏览器的cookie中。然后第二个请求知道你是谁?但是邮递员没有设置任何cookie。当我调用/api/connect/github时,它应该通过身份验证器来获取令牌并将其传递给请求。但当我向邮递员打电话时,它从未通过验证器。因此,我不确定Cookie是否有问题,因为Postman正在通过POST方法调用我的访问令牌URL(/api/Access\u Token/github),并使用oauth的授权代码来交换访问令牌。但在我的例子中,令牌是在用户连接到验证器时生成的。所以邮递员永远也拿不到代币。我想我必须改变accessToken函数的工作方式,但我不知道如何。
public function getCredentials(Request $request)
{
    $accesstoken = $this->fetchAccessToken($this->getClient());
    $request->headers->set("Access Token", $accesstoken);
    return $accesstoken;
}

public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $providerKey)
{
    $request->getSession()->set("Access Token", $request->headers->get("Access Token"));
    return null;
}