Надеюсь, кто-нибудь может ответить на мой вопрос ниже.
Я запускаю проект с symgfony2. Я предлагаю пользователям импортировать свое CV из внешних платформ, таких как Linkedin или XING.
Что мне не нужно, так это предложить пользователю возможность входа на мой сайт через linkedin или Xing.
Поэтому, хотя я могу использовать для этого HwioAuthBundle, но я не могу понять, как это сделать!
На данный момент это так, что я прихожу на страницу входа в систему, но когда я вернусь на свой сайт, я получаю сообщение об ошибке:
«»»
Controller "XXXXX\MyBundle\Controller\MyController::importProfileLinkedinAction()" requires that you provide a value for the "$response" argument (because there is no default value or because there is a non optional argument after this one).
«»»
Я делаю это, как описано в документации:
hwi_oauth: firewall_name: secured_area resource_owners: linkedin: type: linkedin client_id: XXXXXXXXXXXXXXXX client_secret: XXXXXXXXXXXXXXXX scope: r_fullprofile infos_url: "http://api.linkedin.com/v1/people/~:(id,formatted name,recommendations-received)" services: oauth_user_provider: class: HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUserProvider
secured_area: oauth: resource_owners: linkedin: /login/linkedin login_path: /secured/login failure_path: /secured/login oauth_user_provider: oauth: ~
hwi_oauth_redirect: resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml" prefix: /secured/connect linkedin: pattern: /login/linkedin defaults: _controller: MYBundle:MyController:importProfileLinkedin
поhwi_oauth_redirect: resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml" prefix: /secured/connect linkedin: pattern: /login/linkedin defaults: _controller: MYBundle:MyController:importProfileLinkedin
use \HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface; ... public function importProfileLinkedinAction(Request $request, UserResponseInterface $response) { $data = $response->getResponse(); /* this method should return all data that was sent from resource owner ???*/ var_dump( $data ); exit; }
благодаря
Контроллер переписывания пакетов – это плохая идея, поскольку логика намного сложнее, чем простой запрос на чтение и ответ. Пожалуйста, ознакомьтесь с официальной документацией .
Ваша проблема заключается в том, что $response
никогда не отображается глобально, он скрыт для внутреннего использования пакета и задан только в нескольких местах. Чтобы сделать это правильно, вам необходимо реализовать собственный провайдер и перезаписать функциональные возможности: loadUserByOAuthUserResponse(UserResponseInterface $response)
и сохранить необходимые данные, то есть в сеансе.