1

Проблема: новый пользователь не создается при успешной аутентификации с помощью учетной записи Facebook. ПРИМЕЧАНИЕ. У меня установлена ​​чистая система от https://github.com/SocalNick/ScnSocialAuth [zip file download] и скорректирована идентификатор и пароль Facebook с панели инструментов Facebook Developer, и она успешно прошла проверку подлинности и создала нового пользователя в моей таблице пользователя и ссылке в таблице user_provider. Это проблема, из-за которой я вытягиваю свои волосы, так как она отлично работает здесь, но не в моем индивидуальном приложении. Должно быть простым в сравнении, но это не так ...)ZF2 ZfcUser ScnSocialAuth регистрация + аутентификация Facebook

Моя установка ZF2 включает в себя приложение Skeleton, ZF 2.3x, ZfcUser, BjyAuthorise, ScnSocialAuth, Goalio (Mailservice and Password), Webino и мои пользовательские модули.

Моего модуль член перекрывает стандартные настройки ZfcUser как так:

'zfcuser' => array(
       'type' => 'Zend\Mvc\Router\Http\Literal', 
       'options' => array(
         'route' => '/account', 
       ), 
     ), 

'scn-social-auth-user' => array(
        'type' => 'Literal', 
        'options' => array(
          'route' => '/account', 
          'defaults' => array(
            'controller' => 'zfcuser', 
            'action'  => 'index', 
          ), 
        ), 
     ), 

    'zfcuser' => array(
     // telling ZfcUser to use our own class 
     'user_entity_class'  => 'WMember\Entity\WMember', 
     // telling ZfcUserDoctrineORM to skip the entities it defines 
     'enable_default_entities' => false, 
     'table_name' => 'w_member', 
     'login_redirect_route' => 'account', 
), 

Наряду с некоторыми формами настроек в @/модуле/module.php для настройки ZFCForm

$sharedEvents->attach('ZfcUser\Form\Register', 
      'init', 
      function($e) 
      { 
       /* @var $form \ZfcUser\Form\Register */ 
       $form = $e->getTarget(); 

Я успешно перезаписал представления, включив ScnSocialAuth и Zfcregistration. (вопросы, обсуждаемые здесь: SFdot ком/вопросы/31261580/ZF2-scnsocialauth-hybridauth-zfcuser-и-маршруты)

Проблема в том, что, когда я нажимаю на 'Facebook' под 'социальной регистрации'/счета/регистр я правильно попадаю в Facebook для входа в систему. (FB/login.php? Skip_api_login = 1 & api_key = ...) Я вхожу в систему и возвращаюсь в свое приложение. Выполняет несколько переходов, и я возвращаюсь обратно в/account/login # = «Несколько прыжков» Я говорю о том, что я вижу в инструментах Dev в хром-сети. (не могу отправить изображение из-за Rep < 10 ...) - facebook.com/ajax/bz - facebook.com/login.php?login_attempt=1 & next = 3A% 2F% 2Fwww.facebook.com % 2Fv2.0% 2Fdialog% 2Foauth% 3Fredirect_uri% 253A% 252F% 252Fmain.localtest.me% 252Fscn-social-auth% 252Fhauth% 253Fhauth.done% 25 - facebook.com/v2.0/dialog/oauth?redirect_uri = 3A% 2F% 2Fmain.localtest.me% 2Fscn-social-auth% 2Fhauth% 3Fhauth.done% - main.localtest.me/scn-social-auth/hauth?hauth.done=Facebook & code = AQC2MLK84QXAq0XW5gAgtWevuNAMSU- ...

Отладка (извлечение) из файла журнала ScnSocial приведена ниже:

INFO -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Hybrid_Auth::initialize(). PHP version: 5.4.27 
    INFO -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Hybrid_Auth::initialize(). Hybrid_Auth version: 2.4.1 
    INFO -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Hybrid_Auth::initialize(). Hybrid_Auth called from: main.localtest.me/scn-social-auth/hauth?hauth.done=Facebook&code=AQC2ML./... 
    DEBUG -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Hybrid_Auth initialize. dump used config: -- 
    DEBUG -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Hybrid_Auth initialize. dump current session: -- 
    a:3:{s:38:"hauth_session.facebook.hauth_return_to";s:38:"s:30:"/account/authenticate/facebook";";s:37:"hauth_session.facebook.hauth_endpoint"; 
    -- main.localtest.me/scn-social-auth/hauth?hauth.done=Facebook -- 
    INFO -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Hybrid_Auth initialize: check if any error is stored on the endpoint... 
    INFO -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Hybrid_Auth initialize: no error found. initialization succeed. 
    DEBUG -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Enter Hybrid_Auth::setup(Facebook) -- 
    DEBUG -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Hybrid_Auth::setup(Facebook), no params given. Trying to get the stored for this provider. -- Array 
    (
     [hauth_return_to] => /account/authenticate/facebook 
     [hauth_token] => vmj2li2q2bhln5np9ndc7shll6 
     [hauth_time] => 1437715061 
     [login_start] => main.localtest.me/scn-social-auth/hauth?hauth.start=Facebook&hauth.time=1437715061 
     [login_done] => main.localtest.me/scn-social-auth/hauth?hauth.done=Facebook 
    ) 

INFO -- 127.0.0.1 -- 2015-07-24T15:19:22+10:00 -- Enter Hybrid_Provider_Adapter::factory(Facebook) 
DEBUG -- 127.0.0.1 -- 2015-07-24T15:19:23+10:00 -- Hybrid_Provider_Model::__construct(Facebook) initialized. dump current adapter instance: -- 
O:25:"Hybrid_Providers_Facebook":7:{s:5:"scope";s:112:"email, user_about_me, user_birthday, user_hometown, user_website, 

Любые указатели здесь будут оценены, так как я все еще изучаю входы/выходы Zf2 и PHP 5.4+ замыканий, функций lamda и DI в ZF2.

Опять же, основная проблема заключается в том, что я не могу создать нового пользователя через социальную регистрацию. Я установил флаг «true», хотя он по умолчанию используется в sc-social-auth-global.php

ответ

1

Проблемы были в том, что ScnSocial не создавал пользователя, и я считаю, что это проблема BJYAuthorize Controller Gaurd. Похоже, что когда модуль отключается для аутентификации в конце провайдера, BJYAuthorise не имеет ролей, и в результате он не работает при попытке создать пользователя. Исправление, которое сработало для меня, это установить (в вашем bjyauthorize. [Global | local].PHP) [контроллер или маршрут gaurds]

['controller' => 'ScnSocialAuth-User','roles'=> []], 
['controller' => 'ScnSocialAuth-HybridAuth','roles'=> []] 

Это, вероятно, не рекомендуется, но это, кажется, решить вопрос пользователя не создается. Нет Я могу создать пользователя через Facebook. (ПРИМЕЧАНИЕ. Еще одна проблема возникла с ролями и не установлена ​​ролей и, следовательно, получает 403, но это для другой записи)

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