Пока нашел костыльное решение влоб:
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?>
|