Неверный 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;
}
}