Ich habe versucht, FOSUserBundle mit FpOpenIDBundle zu integrieren, aber ich stieß auf ein Problem, wenn Auth erstellt wird. Ich bekomme FehlerSymfony 2.0 FOSUserBundle mit OpenID
Instanzen von "Alef \ UserBundle \ Entity \ User" werden nicht unterstützt.
Meine Klasse sieht wie folgt aus
<?php
namespace Alef\UserBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use FOS\UserBundle\Entity\User as BaseUser;
use FOS\UserBundle\Model\GroupInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* User Entity
*
* @ORM\Entity
* @ORM\Table(name="alef_users")
*
* @author James Morris <[email protected]>
* @package SecurityBundle
*/
class User extends BaseUser implements \FOS\UserBundle\Model\GroupableInterface
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="Alef\UserBundle\Entity\Group")
* @ORM\JoinTable(name="alef_user_groups",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
*)
*/
protected $groups;
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=255)
*/
protected $firstname;
/**
* @var string
*
* @ORM\Column(name="lastname", type="string", length=255)
*/
protected $lastname;
/**
* @var string
*
* @ORM\Column(name="facebookId", type="string", length=255)
*/
protected $facebookId;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
public function serialize()
{
return serialize(array($this->facebookId, parent::serialize()));;
}
public function unserialize($data)
{
list($this->facebookId, $parentData) = unserialize($data);
parent::unserialize($parentData);
}
/**
* @return string
*/
public function getFirstname()
{
return $this->firstname;
}
/**
* @param string $firstname
*/
public function setFirstname($firstname)
{
$this->firstname = $firstname;
}
/**
* @return string
*/
public function getLastname()
{
return $this->lastname;
}
/**
* @param string $lastname
*/
public function setLastname($lastname)
{
$this->lastname = $lastname;
}
/**
* Get the full name of the user (first + last name)
* @return string
*/
public function getFullName()
{
return $this->getFirstName() . ' ' . $this->getLastname();
}
/**
* @param string $facebookId
* @return void
*/
public function setFacebookId($facebookId)
{
$this->facebookId = $facebookId;
$this->setUsername($facebookId);
$this->salt = '';
}
/**
* @return string
*/
public function getFacebookId()
{
return $this->facebookId;
}
/**
* @param Array
*/
public function setFBData($fbdata)
{
if (isset($fbdata['id'])) {
$this->setFacebookId($fbdata['id']);
$this->addRole('ROLE_FACEBOOK');
}
if (isset($fbdata['first_name'])) {
$this->setFirstname($fbdata['first_name']);
}
if (isset($fbdata['last_name'])) {
$this->setLastname($fbdata['last_name']);
}
if (isset($fbdata['email'])) {
$this->setEmail($fbdata['email']);
}
}
public function __construct()
{
parent::__construct();
$this->facebookId = 0;
}
}
Ich weiß, es Vererbung Problem ist, weil FpOpenId Original symfony Sicherheit Benutzerklasse erbt aber FOSUSer erbt nicht von ihm. Gibt es eine Möglichkeit, FPOpenIDBundle zu aktualisieren, um damit tatsächlich zu arbeiten?
Hinweis: Sie fpOpenID nicht mehr verwenden, wenn Sie Ihre geistige Gesundheit halten wollen. Es wurde seit einem Jahr nicht mehr aktualisiert und wird bei den aktuellen PHP/Symfony2-Versionen nicht mehr funktionieren, da wichtige Methoden wie getExtraInformation() veraltet sind. – Tom