创建“使用Facebook登录”但响应为“尝试获取访问令牌时失败”

时间:2017-08-08 21:39:36

标签: php symfony oauth facebook-php-sdk facebook-login

我正在尝试从我的网站上的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);
    }

0 个答案:

没有答案