We build. You grow.

Get best community software here

Start a social network, a fan-site, an education project with oxwall - free opensource community software

FaceBook Connect - не пускает пользователей | Forum

Marat
Marat Apr 16 '13
Коллеги, подскажите, может кто сталкивался. Что делать если сайт не пускает пользователей у кого имя на русском языке? 


Какие ограничения вообще есть? 

Attachments:
  123123.jpg (178.41Kb)
Sergey
Sergey Apr 17 '13
Марат, я уже поднимал эту тему, но пока разработчик ничего не переделал.
Marat
Marat Apr 18 '13
Решил полностью проблему. Потребовалось изменить значения в базе данных и дописать логику в controller connector.php



Евгений
Евгений Apr 19 '13
Quote from Marat Решил полностью проблему. Потребовалось изменить значения в базе данных и дописать логику в controller connector.php




Подробнее можно?
Sergey
Sergey Apr 19 '13
Желательно поэтапно для дураков вроде меня)
The Forum post is edited by Sergey Apr 19 '13
Marat
Marat Apr 19 '13
Значит так: 

начальные условия:

1. Логин для системы - берется из поля username Facebook - Он всегда на английском. НО бывают что в нем встречаются символ точка - что запрещено в использовании в oxwall. 

2. В faceboo username не всегда есть. Иногда у пользователя его нет, а есть только его ID. Но у пользователя всегда есть поле email.

3. В БД oxwall в таблице для FaceBook есть неточность. 


Значит так:

1. Правим Базу данных:

В таблице fb_connect_field перечилен метчинг полей API facebook и и полей в oxwall. Есть запись: question USERNAME = name - что не есть правильно! Ибо в name от facebook приходит не username пользователя, а его полное имя (то что отобразается у пользователя в профиле большими буквами). Нужно это поле ручками (больше ни где этого не сделаешь) заменить на username. 


У меня это выгладит так:




Поле realname - изменяется из аднинки fbconnect. Для него я установил значение name - оно спокойно съедает полные имена пользователей в FaceBook (например Иванов Иван)


2. После этих правок все будет работать в том случае если:

    а. У пользователя в facebook есть username (это важно)

    б. В facebook username пользователя не используется точка (не пройдет проверку да и oxwall с такими usernamr не работает)


КАК Я решил эту проблему (каждый может решить по своему но я сделал это так:


в контроллере fbconnect ow_plugin/fbconnect/controllers/connect.php сделал следующие правки:

Строка 81:

 $questions = $this->service->requestQuestionValueList($fbUser);


Получает массив из facebook. 

В массиве как раз key = то что в базе в таблице fb_connect_field в поле question

1.  Ловим точку в username:


$questions = $this->service->requestQuestionValueList($fbUser);
        $username = str_replace(".", "_", $questions['username']);        

$password = uniqid();


Теперь добавляем условие, что если username пустое, придумываем свое:


  if ($username == "") {    

        $explode_email = explode ("@", $questions["email"]);            

$username = str_replace(".", "_", $explode_email[0]);        

}



Я решил взять username из его email, т.к. ту часть которая идет до @ при этом, так же точки заменяю на _  

Конечно, это не обеспечивает полной уникальности, и наверное стоит добавить еще что, но я не стал пока заморачиваться.


Собственно после этих правок все те пользователи которые не смогли зайти (а были и такие у которых и точки в username и те у которых username просто нет) смогли залогиниться. 


причем в realname попадает значение name из facebook на русском, и ни каких проблем нет.


Enjoy работает тут http://friendfish.ru



The Forum post is edited by Marat Apr 19 '13
Sergey
Sergey Apr 19 '13
Спасибо большое Марат! Все работает)
Hajnalka M Cs
Hajnalka M Cs Oct 25 '13
Thanks to you guys I managed to resolve problem with non-latin characters, but it was very interesting process using google translate :)
lucius
lucius Jan 16 '14
Quote from Marat Я решил взять username из его email, т.к. ту часть которая идет до @ при этом, так же точки заменяю на _

как вариант - счетчик, но потребуется дополнительная ячейка в базе. как альтернатива - полный email с заменой точек и собаки.

было бы идеально, если б это вы направили разработчикам как решение или сделайте платное альтернативное решение, хоть на хостинг - да капнет.

а так за решение + жирный!

Anas mansour
Anas mansour Jun 12 '14
hi
does this method solve registering with arabic characters ?
omer
omer Jan 17 '15
and turkish charecter... how can i solve...?