по правде говоря хотелось бы получить нормальный список параметров позволяющих получить login (username) email first name last name
если есть какие-то другие полезные поля то и их тоже хаки не очень интересны, нужно не обходить, а решать проблему 2015-04-08 19:39 GMT+06:00 Alexey Terekhov <deadl...@mail.ru>: > > `oauth_servers` > 1. В место email указываю id, чтобы не было конфликтов. работает. > login_param_name указываю id. (эх, сюда бы префикс в начало...) > если id совпадут будет ошибка. :( > > 2. В яндеск при подключении нужно открыть доступ к яндекс.паспорт, иначе > яндекс не даст first_name и т.п. и будет ошибка. > > Этот общий для всех!!! > > `request_token_attributes`='code={$code}&client_id={$client_id}&client_secret={$client_secret}&redirect_uri={$redirect_uri}&grant_type=authorization_code' > > Название > `firstname_param_name`, `lastname_param_name`, `email_param_name`, > `login_param_name`, > `request_info_url`, > `request_key_url`, > `request_token_url` > > Yandex > 'first_name', 'last_name', 'id', 'id', > 'https://login.yandex.ru/info?format=json&oauth_token={$access_token}' > ' > https://oauth.yandex.ru/authorize?response_type=code&client_id={$client_id} > ' > 'https://oauth.yandex.ru/token' > > Google > 'given_name', 'family_name', 'id', 'id' > ' > https://www.googleapis.com/oauth2/v1/userinfo?access_token={$access_token} > ' > ' > https://accounts.google.com/o/oauth2/auth?redirect_uri={$redirect_uri}&response_type=code&client_id={$client_id}&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile > ' > 'https://accounts.google.com/o/oauth2/token' > > Facebook > 'first_name', 'last_name', 'id', 'id' > 'https://graph.facebook.com/me?access_token={$access_token}' > ' > https://www.facebook.com/dialog/oauth?client_id={$client_id}&redirect_uri={$redirect_uri}&scope=email&response_type=code > ' > 'https://graph.facebook.com/v2.3/oauth/access_token' > > --- > С уважением, Алексей Терехов. > +7 926 076 15 20 > > Среда, 8 апреля 2015, 17:58 +06:00 от Maxim Solodovnik < > solomax...@gmail.com>: > >ну я жду тогда параметры > >добавляю это всё в параметры по умолчанию и заливаю > > > >строю билд и можно тестить :) > >у меня почти всё проверить не выйдет так что буду рад помощи с > тестированием > >билд появится тут: > > > https://builds.apache.org/view/M-R/view/OpenMeetings/job/Openmeetings%203.0.x/ > > > > > >2015-04-08 17:41 GMT+06:00 Alexey Terekhov < deadl...@mail.ru >: > > > >> Ура... нашел нужный запрос для facebook!!! > >> вот корректный, в настройках по умолчанию старый, который дает > >> access_token не json как все, а в виде параметра url. > >> " https://graph.facebook.com/v2.3/oauth/access_token " - это вернет > >> access_token в json > >> > >> Ok. сейчас этим и занимаюсь. :) > >> инфы готовой много, нужно проверять и хочу собрать в короткий формат. > >> > >> но в целом вот сложности: > >> > >> vk.com возвращает данные в виде: > >> "response: [ { uid: 205387401 , first_name: 'Tom' , last_name: > >> 'Cruise' } ]" > >> ! нужно из ответа убрать убрать первых 11 символов и последний. > >> возможно найду вариант в другом формате получить, например xls. > >> > >> mail.ru и (одноклассники) для запроса данных просит sing > >> который нужно ГЕНЕРИРОВАТЬ > >> > >> > sign=hex_md5('app_id={client_id}method=users.getInfosecure=1session_key={access_token}{secret_key}') > >> > >> 1. Чуть позже скину свои настройки для сетей (facebook, yandex, google). > >> > >> 2. С vk.com и mail.ru скорее всего через костыль, вряд ли есть смысл > под > >> них что-то делать в OM. > >> возможно эти системы когда-нибудь сделают нормальный ответ и их можно > >> будет прописать. > >> > >> 3. Доп. параметры, пол, день рождение, телефон и прочее, что возвращают > >> сети > >> прошу добавить их в бушующих версиях. > >> + или какая-нибудь копка в профиле заполнить данные из соц.сети (если > вход > >> через сеть). > >> > >> --- > >> С уважением, Алексей Терехов. > >> +7 926 076 15 20 > >> > >> Среда, 8 апреля 2015, 16:38 +06:00 от Maxim Solodovnik < > >> solomax...@gmail.com >: > >> >ну Вы напишите какие поля какой провайдер предоставляет и как они > >> >называются (если это возможно) и я поправлю чтобы нормально работало > >> > > >> >2015-04-08 15:05 GMT+06:00 Alexey Terekhov < deadl...@mail.ru >: > >> > > >> >> Спасибо за ответы!!! > >> >> > >> >> Получается так: > >> >> 1. OAutch - в целом работает хорошо, однако желательно в будущем > >> улучшить > >> >> обработчик ошибок. > >> >> internal error поменять, на что-нибудь более понятное. > >> >> > >> >> 2. Для "кривых" соц.сетей использовать внешний обработчик который > вернет > >> >> системе поля: login,email,fist_name,last_name. > >> >> * было бы неплохо расширить список полей обрабатываемых от OAuth2 > (тел > >> для > >> >> sms,дата рождения и т.п.) > >> >> > >> >> 3. Думаю для входа через OAutch 3.0.4 "сегодня" можно и нужно! > прописать > >> >> префиксы сети к login > >> >> так как два одинаковых логин приведут к internal error. > >> >> а поле email делать пустым, это должно решить вопрос с входом из > >> соц.сетей > >> >> но мы теряем связь с этими пользователями, нет возможности им > написать > >> на > >> >> email. > >> >> или попробовать добавить к email префикс - но такой адрес может не > >> пройти > >> >> валидацию и привести к новым ошибкам. > >> >> > >> >> ! в 3.0.2 пользователь может менять в профиле emal адрес на любой > >> >> свободный. > >> >> > >> >> + думаю необходим flag в config разрешающий использовать одинаковые > >> email > >> >> для разных типов входов > >> >> и идентифицировать их как разных пользователей в системе. > >> >> сопоставлять при авторизации e-mail с типом входа. > >> >> то есть, может быть N одинаковых e-mail для N разных типов входов - > >> каждый > >> >> тип входа + email уникальный аккаунт. > >> >> > >> >> + в последствии реализовать в профиле управление входами, объединение > >> >> аккаунтов с различных входов. > >> >> > >> >> Ушел дописывать свой "костыль", думаю добавить вход через mail.ru. > >> >> если кому-нибудь интересе вход, еще через что-нибудь кроме: > >> >> yandex,google,facebook,vk.com,mail.ru - пишите. > >> >> так как мне этих 5 систем хватит. > >> >> > >> >> По результату, думаю завтра, опишу свои настройки OAuth2 для > "нормальных > >> >> сетей" и входы/обработка/выводы костыля для "кривых" > >> >> может кому-нибудь пригодится. > >> >> > >> >> --- > >> >> С уважением, Алексей Терехов. > >> >> +7 926 076 15 20 > >> >> > >> >> Среда, 8 апреля 2015, 11:52 +06:00 от Maxim Solodovnik < > >> >> solomax...@gmail.com >: > >> >> >1) по поводу ошибки я думаю что вот это > >> >> > https://issues.apache.org/jira/browse/OPENMEETINGS-1196 она > >> >> > > >> >> >2) логин с одним мылом и разными провайдерами - хороший вопрос, надо > >> >> >подумать > >> >> > > >> >> >3) request_method может быть 0 == post и 1 == get. тут недоглядели, > >> надо > >> >> >было сохранять этот енум по именам > >> >> > > >> >> >4) доп поля, сейчас не достаются, но это можно, patches are welcome > :) > >> >> > > >> >> >ну я так думаю что internal error надо починить к релизу 3.0.5 > (будет > >> >> через > >> >> >неделю примерно) а остальное подумать и сделать к следующей версии > >> >> >помощь в тестировании будет очень кстати :) > >> >> > > >> >> >2015-04-08 7:13 GMT+06:00 Alexey Terekhov < deadl...@mail.ru >: > >> >> > > >> >> >> Доброй ночи. > >> >> >> > >> >> >> в OM 3.0.4 > >> >> >> google работает прописал ключи и в путь... > >> >> >> yandex нужно изменить 'email_param_name' и 'login_param_name' с > >> >> >> 'default_email' на 'login'. (так как в ответе от яндекса нет > >> >> default_email). > >> >> >> > >> >> >> facebook, vk.com решил через "костыль". :) > >> >> >> > >> >> >> в admin/oauth2 > >> >> >> request_key_url=http://localhost/crutch.php > >> >> >> > >> >> >> > >> >> > >> > request_token_attributes=code={$code}&client_id={$client_id}&client_secret={$client_secret}&redirect_uri={$redirect_uri} > >> >> >> request_token_url= > >> >> http://localhost/crutch.php?access_token={$access_token } > >> >> >> OM обращается к моему скрипту php, скрипт > >> >> >> на запрос 1 POST. возвращает access_token в JSON формате > >> >> >> на запрос 2 GET. возвращает login,email,firs_name,last_name в JSON > >> >> формате > >> >> >> > >> >> >> задача скрипта получить данные от соц. сетей и вернуть их в > "нужном" > >> >> >> формате в OpenMeeting. > >> >> >> > >> >> >> Думаю это важный BUG или ВОПРОС: > >> >> >> по Русски: > >> >> >> если я зарегистрировался через email + login + password, то > попытка > >> >> зайти > >> >> >> через соц.сеть в которой указан мой email > >> >> >> приведет к internat error! > >> >> >> к тому же приведет если в ответе от соц. сети будет login который > уже > >> >> есть > >> >> >> в системе => internat error. > >> >> >> > >> >> >> или например у меня один email указан в google и контакте, я смогу > >> >> >> заходить только через то, через что был первый вход, другую кинет > >> >> >> в internat error. > >> >> >> > >> >> >> => в системе не может быть более одного пользователя с login или > >> email. > >> >> >> то есть email и login должны быть уникальными, исключение пустые > >> >> >> (возможно одна запить где email="" и login=""; > >> >> >> неограниченно email="", login=random() или email=random(), > login="") > >> >> >> но если login задан, такого второго быть не может! > >> >> >> > >> >> >> 1. если к логин можно прикрутить префикс, то как быть с email - > >> ВОПРОС. > >> >> >> > >> >> >> 2. Возможность заходить через e-mail и соц. сети одному и тому же > >> >> >> пользователю. > >> >> >> - как идентифицировать, что это один и тот же человек из разных > >> систем, > >> >> а > >> >> >> не злоумышленник > >> >> >> зарегился под чужой email в контакте и пробует зайдет с правами > >> админа. > >> >> >> > >> >> >> ДОП. ВОПРОСЫ: > >> >> >> 1. В таблице `oauth_servers` есть поле `request_method` типа int > >> >> >> Используется ли оно, если да, то какие возможны значения? > >> >> >> > >> >> >> 2. Кроме login,email,firs_name,last_name - может ли система еще > >> >> что-нибудь > >> >> >> принять, например phone, photo и т.п. > >> >> >> или нужно в базе через "костыль" ковыряться? > >> >> >> > >> >> >> Мои соображения: > >> >> >> Я думаю, что тут ключевым является требования к безопасности и > левел > >> >> >> пользователя в системе. > >> >> >> например: авторизация через соц. сети доступна только для левел > >> гость. > >> >> >> > >> >> >> если нет особых требований к гостям, то пропускать в систему и > >> >> >> идентифицировать по email переданному от сети. > >> >> >> ведь соц. сетях обычно требуют подтверждения email. > >> >> >> > >> >> >> * логин от соц. сетей делать уникальным через префиксы. > >> >> >> > >> >> >> ! настройка в профиле пользователя для доступности входа из > >> соц.сетей и > >> >> >> выбор из каких. > >> >> >> > >> >> >> => необходима обработка ошибки доступа при наличии полученного от > >> соц. > >> >> >> сети email в базе и запрета на доступ. > >> >> >> > >> >> >> P.S. На мой взгляд сегодня решение через "костыль" оптимальное, > так > >> как > >> >> >> соц. сети отвечают "как хотят", могут менять типы ответов и т.п. > >> >> >> если кому-нибудь нужно, могу подробно описать как настраивал у > себя > >> >> OAuth2. > >> >> >> Очень интересуют ответы на доп. вопросы и мысли по авторизации > одного > >> >> >> пользователя из разных систем. > >> >> >> > >> >> >> --- > >> >> >> С уважением, Алексей Терехов. > >> >> >> +7 926 076 15 20 > >> >> >> > >> >> >> Вторник, 7 апреля 2015, 23:46 +03:00 от Alexey Terekhov < > >> >> >> deadl...@mail.ru >: > >> >> >> > Добрый вечер. > >> >> >> > прописал ключи для Google, yandex, facebook, vk.com > >> >> >> > сделал клон таблицы "oauth_servers" (настройки OAuth2) > >> >> >> > добавил в таблицу поле damp_answer > >> >> >> > написал скрипт получение данных использую настройки OAuth2 > >> >> >> > в damp_answer записал работу моего скрипа (html таблица > запросов и > >> >> >> ответов) > >> >> >> > после сохранения выгрузки заменил часть ключей на 88888. > >> >> >> > > >> >> >> > 1. если я чего случайно не перекрутил у себя, то у меня прописан > >> был > >> >> >> след. DEFAULT запрос данных из facebook: > >> >> >> > > >> >> >> > >> >> > >> > https://graph.facebook.com/me?access_token={$access_token}&fields=username,first_name,last_name,email > >> >> >> > > >> >> >> > ОН НЕВЕРНЫЙ, username следует изменить на name, иначе (если > >> оставить > >> >> >> username, ответ будет NULL) > >> >> >> > > >> >> >> > 2. Разный формат ответа на запрос токена > >> >> >> > google, vk.com, yandex отвечают в формате json: {"a":"X","b":y} > >> >> >> > facebook отвечает: a=X&b=Y > >> >> >> > в damp_answer это видно > >> >> >> > > >> >> >> > 3. Перегружусь под server и подправлю у себя п.1 и попробую > выдрать > >> >> >> значимую информацию из логов > >> >> >> > относящуюся к входам fb,vk,yandex. > >> >> >> > > >> >> >> > PS. Если нужно могу проверить(сделать damp) другие, например > >> mail.ru, > >> >> >> одноклассники и т.п., пишите. > >> >> >> > > >> >> >> > > >> >> >> > Надеюсь приложение пройдет. > >> >> >> > 1. debugoauth2.html вывод базы > >> >> >> > 2. oauth_servers.sql экспорт базы > >> >> >> > > >> >> >> > --- > >> >> >> > С уважением, Алексей Терехов. > >> >> >> > +7 926 076 15 20 > >> >> >> > > >> >> >> > Вторник, 7 апреля 2015, 17:54 +03:00 от Alexey Terekhov < > >> >> >> deadl...@mail.ru >: > >> >> >> > > > >> >> >> > >О, супер, спасибо! > >> >> >> > > > >> >> >> > > Прописал Google (в OM 3.0.4) - и у меня работает! > >> >> >> > > > >> >> >> > >теперь есть шанс понять, что с facebook и т.п. не так. > >> >> >> > > > >> >> >> > > > >> >> >> > >--- > >> >> >> > >С уважением, Алексей Терехов. > >> >> >> > > > >> >> >> > >Вторник, 7 апреля 2015, 18:41 +06:00 от Maxim Solodovnik < > >> >> >> solomax...@gmail.com >: > >> >> >> > >>фейсбук и контакт проверить не могу (нет учёток) > >> >> >> > >>проверял гугел - работает нормально > >> >> >> > >> > >> >> >> > >>3.0.3 и 3.0.4 скорее не запустились потому что им для работы > >> нужна > >> >> >> java7 > >> >> >> > >> > >> >> >> > >>может быть кто-то пробовал настроить и поделится опытом? > >> >> >> > >> > >> >> >> > >>2015-04-07 15:44 GMT+06:00 Alexey Terekhov < > deadl...@mail.ru > >> >: > >> >> >> > >> > >> >> >> > >>> Добрый день, Сообщество! :) > >> >> >> > >>> > >> >> >> > >>> Возникли у меня сложности с OAuth2 (пробовал в 3.0.2 и в > 3.0.4 > >> - > >> >> не > >> >> >> решено > >> >> >> > >>> ) > >> >> >> > >>> сейчас речь будет о: openmeetings 3.0.4 + MariaDB на Ubuntu > >> >> 14.04.2 > >> >> >> server > >> >> >> > >>> > >> >> >> > >>> поставлена по инструкции для ububtu-14.04.1-desktop-amd64 > >> >> >> > >>> ( > >> >> >> > >>> > >> >> >> > >> >> > >> > https://cwiki.apache.org/confluence/download/attachments/27838216/Installation%20OpenMeetings%203.0.x%20on%20Ubuntu%2014.04.pdf?version=6&modificationDate=1425048449000&api=v2 > >> >> >> > >>> ) > >> >> >> > >>> > >> >> >> > >>> добавил sudo apt-get install software-properies-common > >> >> >> > >>> и все действия в /opt через sudo, а так чистая система > >> >> поставленная > >> >> >> по > >> >> >> > >>> инструкции. > >> >> >> > >>> > >> >> >> > >>> 1. прописал домены в facebook и vk.com > >> >> >> > >>> в facebook в настройках куча всего + тестовое app и т.п. > >> отдельный > >> >> >> вопрос > >> >> >> > >>> что там нужно ставить и как. > >> >> >> > >>> > >> >> >> > >>> прописал в admin/config > >> >> >> > >>> application.base.url=http://{MYDOMEN}:5080/openmeetings/ > >> >> >> > >>> > >> >> >> > >>> 2. проверил работу полученных Client_ID и Client_secret > через > >> php. > >> >> >> > >>> > >> >> >> > >>> !!! Особенности(отличие от facebook) vk.com: > >> >> >> > >>> > >> >> >> > >>> querty №1: " > >> >> >> > >>> > >> >> >> > >> >> > >> > https://oauth.vk.com/authorize?client_id={ID}&scope=email&response_type=code&redirect_uri={URI > >> >> >> } > >> >> >> > >>> " > >> >> >> > >>> если успех, вернет код и email! > >> >> >> > >>> > >> >> >> > >>> querty №2: " > >> >> >> > >>> > >> >> >> > >> >> > >> > https://oauth.vk.com/access_token?client_id={ID}&client_secret={SECRET}&redirect_uri={URI}&code={CODE > >> >> >> } > >> >> >> > >>> " > >> >> >> > >>> если успех, вернет access_token в формате json (facebook > >> >> возвращает > >> >> >> в виде > >> >> >> > >>> параметров url) > >> >> >> > >>> > >> >> >> > >>> querty №3: " > >> >> >> > >>> > >> >> >> > >> >> > >> > https://api.vk.com/method/users.get?uids={UIDS}&access_token={TOKEN}&fields=sex,bdate,city > >> >> >> ...... > >> >> >> > >>> ." > >> >> >> > >>> если успех, вернет в формате json (facebook, так же на q№3 > >> >> >> возвращает в > >> >> >> > >>> формате json) > >> >> >> > >>> > >> >> >> > >>> => прописав в OAuth2 новую настройку 4 vk.com, после > >> авторизации > >> >> >> через > >> >> >> > >>> vk.com и возврата в openmt - internal error. > >> >> >> > >>> предположу, что из-за разного формата ответа на 2й вопрос. > >> >> >> > >>> fb: ?a=X&b=Y > >> >> >> > >>> vk: {"a":"X","b":y} > >> >> >> > >>> > >> >> >> > >>> и важно, vk.com отдает e-mail на 2м запросе, в 3м - где > >> >> >> пользовательские > >> >> >> > >>> данные адреса нет!!! > >> >> >> > >>> > >> >> >> > >>> 3. В итоге прописал ключи полученные в yandex, facebook и > >> >> настройки > >> >> >> vk.com > >> >> >> > >>> с ключами. > >> >> >> > >>> результат = ни один из 3х не работает. > >> >> >> > >>> > >> >> >> > >>> в логах у vk.com ошибка в получении данных. а вот с > facebook в > >> >> >> начале все > >> >> >> > >>> как бы нормально, запрашивает code, по коду получает token. > >> >> >> > >>> из брауузера выглядит так: вход через fb => соглашаюсь на > >> передачу > >> >> >> > >>> => возвращает на страницу ввода логина и пасс, в url > >> содержится > >> >> >> ?code=... > >> >> >> > >>> > >> >> >> > >>> концовка лога. (полная часть в входа через facebook в > >> приложении) > >> >> >> > >>> DEBUG 04-06 22:35:03.927 o.a.wicket.Page:871 > >> >> >> > >>> [http-nio-0.0.0.0-5080-exec-2] - ending request for page > [Page > >> >> class > >> >> >> = > >> >> >> > >>> org.apache.openmeetings.web.pages.auth.SignInPage, id = 12, > >> render > >> >> >> count = > >> >> >> > >>> 1], request > >> >> >> > >>> > >> org.apache.wicket.protocol.http.servlet.ServletWebRequest@4b7dfc3 > >> >> >> > >>> DEBUG 04-06 22:35:03.930 o.a.w.p.PageAccessSynchronizer:207 > >> >> >> > >>> [http-nio-0.0.0.0-5080-exec-2] - > 'http-nio-0.0.0.0-5080-exec-2' > >> >> >> released > >> >> >> > >>> lock to page with id '12' > >> >> >> > >>> DEBUG 04-06 22:35:03.930 > >> >> >> > >>> o.a.w.p.AsynchronousDataStore$PageSavingRunnable:354 > >> >> >> > >>> [Wicket-PageSavingThread] - Saving asynchronously: Entry > >> >> >> > >>> [sessionId=E0991D1744CA99FEB6BDBE919E11E65F, pageId=12]... > >> >> >> > >>> DEBUG 04-06 22:35:03.930 o.a.w.p.PageAccessSynchronizer:358 > >> >> >> > >>> [http-nio-0.0.0.0-5080-exec-2] - > 'http-nio-0.0.0.0-5080-exec-2' > >> >> >> notifying > >> >> >> > >>> blocked threads > >> >> >> > >>> DEBUG 04-06 22:35:03.930 o.a.w.p.DiskDataStore:186 > >> >> >> > >>> [Wicket-PageSavingThread] - Storing data for page with id > '12' > >> in > >> >> >> session > >> >> >> > >>> with id 'E0991D1744CA99FEB6BDBE919E11E65F' То есть нажимаю > >> войти > >> >> >> через fb > >> >> >> > >>> => в fb > >> >> >> > >>> > >> >> >> > >>> Возможно есть какие-нибудь решение? > >> >> >> > >>> > >> >> >> > >>> Хотя бы от любой системы залогиниться, я смогу на php > написать > >> >> >> прокси, > >> >> >> > >>> который вернет в нужном формате данные для openmeetings > >> например > >> >> от > >> >> >> vk.com > >> >> >> > >>> > >> >> >> > >>> Много пользователей в России пользуются vk.com и не > хочется их > >> >> >> терять. :) > >> >> >> > >>> > >> >> >> > >>> P.S. есть еще 3.0.2 под ubuntu 10.4, кстати 3.0.3 и 3.0.4 на > >> 10.4 > >> >> не > >> >> >> > >>> запустились (red5.sh чего-то ругнулся..) в ней (3.0.2) > >> авторизация > >> >> >> так же > >> >> >> > >>> не проходит. > >> >> >> > >>> > >> >> >> > >>> Спасибо! > >> >> >> > >>> > >> >> >> > >>> --- > >> >> >> > >>> С уважением, Алексей Терехов. > >> >> >> > >>> +7 926 076 15 20 > >> >> >> > >> > >> >> >> > >> > >> >> >> > >> > >> >> >> > >> > >> >> >> > >>-- > >> >> >> > >>WBR > >> >> >> > >>Maxim aka solomax > >> >> >> > > >> >> >> > >> >> > > >> >> > > >> >> > > >> >> >-- > >> >> >WBR > >> >> >Maxim aka solomax > >> >> > >> >> > >> > > >> > > >> >-- > >> >WBR > >> >Maxim aka solomax > >> > > > > > > > >-- > >WBR > >Maxim aka solomax > > -- WBR Maxim aka solomax