[英]Symfony OAuth api FOSOAuthServerBundle: crash
我试图使用FOSOAuthServerBundle但遇到崩溃问题,崩溃消息是:
PHP Fatal error: Declaration of MP\OAuthBundle\Entity\AccessToken::setUser() must be compatible with that of FOS\OAuthServerBundle\Model\TokenInterface::setUser() in /home/bitnami..../OAuthBundle/Entity/AccessToken.php on line 13
AccessToken.class:
<?php
namespace MP\OAuthBundle\Entity;
use FOS\OAuthServerBundle\Entity\AccessToken as BaseAccessToken;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="oauth_access_tokens")
*/
class AccessToken extends BaseAccessToken
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Client")
* @ORM\JoinColumn(nullable=false)
*/
protected $client;
/**
* @ORM\ManyToOne(targetEntity="\MP\UserBundle\Entity\User")
*/
protected $user;
}
TokenInterface :: SETUSER:
/**
* @param UserInterface $user
*/
function setUser(UserInterface $user);
User.class
namespace MP\UserBundle\Entity;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
/**
* User
*/
class User extends BaseUser
{
const ROLE_ADMIN = 'ROLE_ADMIN';
/**
* @var integer
...
我仍然没有看到问题出在哪里! 我的用户最后实现了UserInterface!
任何的想法?
确保MP\\OAuthBundle\\Entity\\AccessToken
有以下两个use-statements
use Symfony\Component\Security\Core\User\UserInterface;
use FOS\OAuthServerBundle\Model\ClientUserInterface;
您必须确保AccessToken
实现FOS\\OAuthServerBundle\\Model\\TokenInterface
,其中包含具有相同接口的函数声明。
现在,如果你有......
function setUser(UserInterface $user)
...在AccessToken
内部尝试实现TokenInterface
但没有使用use语句...
... UserInterface
将转换为MP\\OAuthBundle\\Entity\\UserInterface
...但它需要是Symfony\\Component\\Security\\Core\\User\\UserInterface
。
结论
参数类型之间的不匹配是PHP抱怨这里两个函数声明之间不匹配的原因。
问题出在您的Access token
类中。 您可能会覆盖setUser()
方法(不在此处粘贴),也不会添加Symfony\\Component\\Security\\Core\\User\\UserInterface
来使用语句。 没有别的办法,因为你的类是第一个也是最后一个覆盖FOS FOS\\OAuthServerBundle\\Model\\AccessToken
。
从您的类中删除此函数定义或修复use语句
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.