소나타 사용자 번들을 HWIOAuthBundle과 통합하는 방법. HWIOAuthBundle에서 문서는 FOSUserBundle입니다. 그러나 NET에는 SonataUserBundle에 대한 문서가 없습니다. 나는 그물을 봤는데 아무 것도 발견하지 못했다. (그물) 내가 만든 HWIOAuthBundle의 문서 당으로 소나타 사용자 번들 및 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 클래스
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;
}
그러나 오류가 발생했습니다.
Unrecognized field: facebookID
도 변경되었습니다. $setter_id = $setter . 'Id';
을 $setter_id = $setter . 'Uid';
으로 변경 했는데도 오류가 있습니다. UPDATE 01
소나타 사용자 개체에 따라 는 : 응용 프로그램 \ 소나타 \ UserBundle \ 엔티티 \ 사용자 에서
나는 $facebookID
을 변경 (모든 관련 ...). 그러면 오류가 발생합니다. invalid password.
http://inchoo.net/dev-talk/symfony-hwioauthbundle-and-google-sign-in/ –