【发布时间】:2019-01-27 12:57:58
【问题描述】:
我正在尝试在注册时创建一个令牌。
我使用FosUserBundle 作为身份验证器,使用FOSOAuthServerBundle 作为API。
当我手动生成令牌时一切正常。但我想在注册成功后自动生成它。所以我创建了一个名为EventListener 的TokenSetter
这里是代码
class TokenSetter
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function postPersist(LifecycleEventArgs $args)
{
$user = $args->getEntity();
if ($user instanceof Account) {
$clientManager = $this->container->get('fos_oauth_server.client_manager.default');
$client = $clientManager->createClient();
$client->setRedirectUris(array('http://127.0.0.1:8000'));
$client->setAllowedGrantTypes(array('password', 'refresh_token'));
$clientManager->updateClient($client);
$grantRequest = new Request(array(
'client_id' => $client->getPublicId(),
'client_secret' => $client->getSecret(),
'grant_type' => 'password',
'username' => $user->getUsername(),
'password' => $user->getPlainPassword()
));
$tokenResponse = $this->container->get('fos_oauth_server.server')->grantAccessToken($grantRequest);
$token = $tokenResponse->getContent();
}
}
}
问题在于$user->getPlainPassword() 返回一个空值。这会导致创建后出现“invalid_request”。
有没有办法获取普通密码或以不同的方式生成令牌?
【问题讨论】:
标签: php api symfony fosuserbundle fosoauthserverbundle