Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Не авторизует через Facebook

00 голосов
5
Подскажите пожалуйста, ни у кого не было такой проблемы. Добавил на сайт авторизацию через соц. сервисы. Авторизация через контакт и twitter работает. А вот Facebook нет. Нажимаю на кнопку, показывает окошко, где спрашивается разрешение на доступ сайта к моим данным. Нажимаю разрешить, после чего перекидывает на страницу моего сайта с такими параметрами index.php?auth_service_id=Facebook&auth_service_error=1 . При этом авторизация не прошла, в чем может быть проблема?
спросил 07 Ноя, 13 от DarkNess1 (100 баллов)

5 Ответы

00 голосов
Вверх
ответил 15 Дек, 13 от DarkNess1 (100 баллов)
00 голосов
Присоеденяюсь к вопросу. Никаких ошибок, кроме как в адресной строке не выдает
ответил 30 Март, 14 от kasente (100 баллов)
00 голосов
Столкнулся с такой же проблемой при авторизации из разделов, на которых работает ЧПУ. Например, с главной страницы сайта авторизует нормально, а из поста блога - уже не авторизует.
ответил 23 Июль, 14 от Ulv (140 баллов)
00 голосов
Кстати, создавал в ТП обращение №231602 от 06.07.2011. ТП проблему увидело, обещало передать проблему разработчику.
ответил 24 Ноя, 14 от Ulv (140 баллов)
00 голосов
Пока нашел костыльное решение влоб:
1) создаем файл /auth/facebook.html с таким содержимым:
Код
<form action=""></form>

2) в любом месте шаблона сайта втыкаем код:

Код
<iframe src="/auth/facebook.html" id="f_form" width="0" height="0"></iframe>
<form target="f_form"  id="facebook_auth" action="https://www.facebook.com/dialog/oauth?">
   <input type="hidden" name="client_id" value="123456789" />
   <input type="hidden" name="redirect_uri" value="http://вашсайт.ru/?auth_service_id=Facebook" />
   <input type="hidden" name="scope" value="email" />
</form>

<script type="text/javascript">

function facebookAuthCrooked() {
   $('form#facebook_auth').submit();
   setTimeout(function() {
      location.reload();
   }, 2000);
   return false;
}
</script>
где 123456789 - ваш id в фейсбуке, а вашсайт.ru - имя вашего домена

3) Открываем файл: /bitrix/components/socserv.auth.form/templates/.default/template.php

Меняем это (начиная со строки 27):
Код
<?foreach($arParams["~AUTH_SERVICES"] as $service):?>
      <div id="bx_auth_serv_<?=$arParams["SUFFIX"]?><?=$service["ID"]?>" style="display:none"><?=$service["FORM_HTML"]?></div>
<?endforeach?>

на это:
Код
<?foreach($arParams["~AUTH_SERVICES"] as $service):?>
         
         <? // мегакостыль, исправляющий баг авторизации на фейсбуке. Если слетит, значит битрикс выпустили обновления с исправлением этого бага 
         if($service["ID"] == 'Facebook')
            $service["FORM_HTML"] = '<a href="javascript:void(0)" onclick="javascript:facebookAuthCrooked();return false;" class="bx-ss-button facebook-button"></a><span class="bx-spacer"></span><span>Используйте вашу учетную запись на Facebook.com для входа на сайт.</span>';
         ?>
         
         <div id="bx_auth_serv_<?=$arParams["SUFFIX"]?><?=$service["ID"]?>" style="display:none"><?=$service["FORM_HTML"]?></div>
<?endforeach?>
ответил 20 Март, 15 от Ulv (140 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 26 Фев, 14 от Sekis (180 баллов)
0 голосов
4 ответов
0 голосов
8 ответов
спросил 27 Июнь, 13 от Lata (220 баллов)
0 голосов
1 ответ