我正在尝试从我的网站上的facebook登录symfony,我添加了应用ID和密码,并且我在有效的OAuth重定向URI之间添加了地址。尽管如此,当我尝试登录时,我从Facebook得到以下回复:
('8', 'Undefined index: auth', '/var/www/html/home/focsivcontest/website/src/Module/SecurityBundle/Listener/DCSOpauthEventSubscriber.php', '39', array('event' => object(OpauthResponseEvent), 'responseData' => array('error' => array('provider' => 'facebook', 'code' => 'access_token_error', 'message' => 'Failed when attempting to obtain access token', 'raw' => 'HTTP/1.1 200 OK Access-Control-Allow-Origin: * Pragma: no-cache Cache-Control: private, no-cache, no-store, must-revalidate x-fb-rev: 3210881 Content-Type: application/json; charset=UTF-8 x-fb-trace-id: G4paDe7A0d1 facebook-api-version: v2.4 Expires: Sat, 01 Jan 2000 00:00:00 GMT Vary: Accept-Encoding X-FB-Debug: iSRLkFs3WO9P9JWmtz29QuUjgpqnAy/memfu6GFByhk2T6Lj0EEklHWDJYQhlc1bKb454w4DGg98ojQp1Ea1gw== Date: Tue, 08 Aug 2017 21:23:26 GMT Connection: close Content-Length: 239'), 'timestamp' => '2017-08-08T23:23:26+02:00')))
有人可以帮助我吗?
在我的树枝上,我有:
<a class="btn btn-block btn-info" href="{{ url('dcs_opauth_connect', {'strategy' : 'facebook'}) }}"><i class="fa fa-fw fa-facebook-square"></i> {{ 'button.login_with_facebook'|trans({}, 'ModuleSecurityBundle') }}</a>
我的DSCOpauthEventSubscriber:
public function checkCredentials(OpauthResponseEvent $event)
{
$responseData = $event->getResponseData();
$provider = $responseData['auth']['provider'];
$uid = $responseData['auth']['uid'];
if (null !== $oauthToken = $this->oauthTokenManager->findByProviderAndUid($provider, $uid)) {
$event->setAuthenticate(false);
$this->tokenService->createFromUser($oauthToken->getUser());
$event->stopPropagation();
}
}
public function createOauthToken(OpauthResponseEvent $event)
{
$responseData = $event->getResponseData();
$email = $responseData['auth']['info']['email'];
if (empty($email)) {
return;
}
if (null === $user = $this->userManager->findUserByEmail($email)) {
return;
}
$oauthToken = $this->oauthTokenManager->create();
$oauthToken->setUser($user);
$oauthToken->setProvider($responseData['auth']['provider']);
$oauthToken->setUid($responseData['auth']['uid']);
$this->oauthTokenManager->save($oauthToken);
$this->tokenService->createFromUser($user);
}