Неверный redirect_uri. Это значение должно соответствовать URL, зарегистрированному с помощью ключа API

Я аутентифицировался с linkedin ..

  • Я использую HWIOAuthBundle и fosuserBundle..
  • Я интегрирую HWIOAuthBundle с fosuserBundle...
  • Я создаю пользовательский сервис, когда у меня есть в документации HWIOAuthBundle ..
  • Я добавляю код в файлы конфигурации и безопасности yml, но у меня есть эта ошибка:

введите описание изображения здесь

и в конфиге app linkedin:

введите описание изображения здесь

код security.yml:

firewalls:
    secured_area:
        anonymous: ~
        oauth:
            resource_owners:
                linkedin:      "/login/check-linkedin"
            login_path:        /connect
            use_forward:       false
            failure_path:      /connect

            oauth_user_provider:
                service: my.oauth_aware.user_provider.service

код config.yml:

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

hwi_oauth_redirect:
    resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
    prefix:   /demo/secured/connect

hwi_oauth_connect:
    resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
    prefix:   /connect

hwi_oauth_login:
    resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
    prefix:   /login

linkedin_login:
    path: /login/check-linkedin

код config.yml:

hwi_oauth:
        connect:
            account_connector: my.oauth_aware.user_provider.service
        fosub:
            username_iterations: 30
            properties:
                linkedin: linkedin_id
        firewall_name: "secured_area"
        resource_owners:
            linkedin:
                type:                linkedin
                client_id:           "%linkedin.id%"
                client_secret:       "%linkedin.secret%"
                options:
                    csrf: true

и код службы:

<?php 

    namespace AppBundle\Service;

    use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
    use HWI\Bundle\OAuthBundle\Security\Core\User\FOSUBUserProvider as BaseFOSUBProvider;
    use Symfony\Component\Security\Core\User\UserInterface;
    use FOS\UserBundle\Model\UserManagerInterface;

    /**
     * Class MyFOSUBUserHandler.
     */

    class MyFOSUBUserHandler extends BaseFOSUBProvider
    {

        /**
         * {@inheritDoc}
         */
        public function connect(UserInterface $user, UserResponseInterface $response)
        {
            // get property from provider configuration by provider name
            // , it will return `facebook_id` in that case (see service definition below)
            $property = $this->getProperty($response);
            $username = $response->getUsername(); // get the unique user identifier

            //we "disconnect" previously connected users
            $existingUser = $this->userManager->findUserBy(array($property => $username));
            if (null !== $existingUser) {
                // set current user id and token to null for disconnect
                // ...

                $this->userManager->updateUser($existingUser);
            }
            // we connect current user, set current user id and token
            // ...
            $this->userManager->updateUser($user);
        }

        /**
         * {@inheritdoc}
         */
        public function loadUserByOAuthUserResponse(UserResponseInterface $response)
        {
            $userEmail = $response->getEmail();
            $user = $this->userManager->findUserByEmail($userEmail);

            // if null just create new user and set it properties
            if (null === $user) {
                $username = $response->getRealName();
                $user = new User();
                $user->setUsername($username);

                // ... save user to database

                return $user;
            }
            // else update access token of existing user
            $serviceName = $response->getResourceOwner()->getName();
            $setter = 'set' . ucfirst($serviceName) . 'AccessToken';
            $user->$setter($response->getAccessToken());//update access token

            return $user;
        }
    }

0 ответов

Другие вопросы по тегам