ソナタユーザーバンドルをHWIOAuthBundleと統合する方法HWIOAuthBundleでは、ドキュメントはFOSUserBundleです。しかし、SonataUserBundleのドキュメントはNETにはありません。私はグーグルグーグルと何も見つかりませんでした。私が作成したHWIOAuthBundleドキュメントを1としてソナタユーザーバンドルと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;
}
(ネットから)私のプロバイダクラス
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/ –