如何将Sonata用户包与HWIOAuthBundle集成。在HWIOAuthBundle文档是FOSUserBundle。但是在NET中没有针对SonataUserBundle的文档。我GOOGLE了网,并没有发现任何东西。Sonata用户包和HWIOAuthBundle
public function connect(UserInterface $user, UserResponseInterface $response) {
$property = $this->getProperty($response);
$username = $response->getUsername();
$service = $response->getResourceOwner()->getName();
$setter = 'set' . ucfirst($service);
$setter_id = $setter . 'Id';
$setter_token = $setter . 'AccessToken';
if (null !== $previousUser = $this->userManager->findUserBy([$property => $username])) {
$previousUser->$setter_id(null);
$previousUser->$setter_token(null);
$this->userManager->updateUser($previousUser);
}
$user->$setter_id($username);
$user->$setter_token($response->getAccessToken());
$this->userManager->updateUser($user);
}
public function loadUserByOAuthUserResponse(UserResponseInterface $response) {
$username = $response->getUsername();
$user = $this->userManager->findUserBy([$this->getProperty($response) => $username]);
if (null === $user) {
$service = $response->getResourceOwner()->getName();
$setter = 'set' . ucfirst($service);
$setter_id = $setter . 'Id';
$setter_token = $setter . 'AccessToken';
$user = $this->userManager->createUser();
$user->$setter_id($username);
$user->$setter_token($response->getAccessToken());
$user->setUsername($username);
$user->setEmail($response->getEmail());
$user->setPlainPassword($response->getAccessToken());
$user->setEnabled(TRUE);
$this->userManager->updateUser($user);
return $user;
}
$user = parent::loadUserByOAuthUserResponse($response);
$serviceName = $response->getResourceOwner()->getName();
$setter = 'set' . ucfirst($serviceName) . 'AccessToken';
$user->$setter($response->getAccessToken());
return $user;
}
按HWIOAuthBundle文档我创建,
应用\索纳塔\ UserBundle \实体\用户
/**
* @ORM\Column(name="facebook_id", type="string", length=255, nullable=true)
*/
private $facebookId;
private $facebookAccessToken;
/**
* @param string $facebookId
* @return User
*/
public function setFacebookId($facebookId)
{
$this->facebookId = $facebookId;
return $this;
}
/**
* @return string
*/
public function getFacebookId()
{
return $this->facebookId;
}
/**
* @param string $facebookAccessToken
* @return User
*/
public function setFacebookAccessToken($facebookAccessToken)
{
$this->facebookAccessToken = $facebookAccessToken;
return $this;
}
/**
* @return string
*/
public function getFacebookAccessToken()
{
return $this->facebookAccessToken;
}
我Provider类(净),但我收到错误
Unrecognized field: facebookID
我也将$setter_id = $setter . 'Id';
更改为$setter_id = $setter . 'Uid';
但仍然错误。 按照奏鸣曲用户实体
更新01:
在应用\索纳塔\ UserBundle \实体\用户 我改变$facebookID
(及其所有相关的...)。然后我得到错误invalid password.
http://inchoo.net/dev-talk/symfony-hwioauthbundle-and-google-sign-in/ –