2013-09-03 3 views
1

Надеюсь, кто-нибудь может ответить на мой вопрос ниже.Symfony2 HWIOauthBundle error с ответом

Я бегу проект с symgfony2. Я предлагаю пользователям импортировать свое CV из внешних платформ, таких как Linkedin или XING.

Что мне не нужно, так это предложить пользователю возможность входа на мой сайт через linkedin или Xing.

Так что, хотя я могу использовать для этого HwioAuthBundle, но я не могу понять это, как это сделать!

В данный момент это так, что я пришел к LoginPage на LinkedIn, но когда я вернусь на свой сайт, то я получаю сообщение об ошибке:

«» «

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). 

„“»

Я делаю это так, как описано в документации:

config.yml

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 

security.yml

 secured_area: 
     oauth: 
      resource_owners: 
       linkedin:    /login/linkedin 
      login_path:  /secured/login 
      failure_path:  /secured/login 

      oauth_user_provider: 
       oauth: ~ 

routing.yml

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

linkedin: 
    pattern: /login/linkedin 
    defaults: 
    _controller: MYBundle:MyController:importProfileLinkedin 

MyController.php

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; 
} 

Благодаря

ответ

2

Перезапись контроллер расслоение плохая идея, так как логика гораздо сложнее, чем просто e читать запрос и возвращать ответ. Пожалуйста, посмотрите на official documentation.

Ваша проблема в том, что $response никогда не подвергается глобальному воздействию, он скрыт для внутреннего использования пучка и предоставляется только в нескольких местах. Чтобы сделать это правильно, вам необходимо реализовать собственный провайдер и перезаписать функциональность: loadUserByOAuthUserResponse(UserResponseInterface $response) и сохранить необходимые данные, то есть в сеансе.

+0

привет спасибо за ваш ответ! Я удалил свой кеш и теперь получаю исключение. Uncaught exception 'Symfony \\ Component \\ Config \\ Определение \\ Исключение \\ InvalidConfigurationException' с сообщением 'Детский узел "login_path" по пути "security.firewalls.secured_area.oauth" должен быть настроен.' – user2742271

+0

Как вы это сделали, я получаю такую ​​же ошибку с facebook. ? любое решение // заметное. –

Смежные вопросы