Спасибо за предоставленное подробное описание. Я просил ответа гораздо меньшего, но такие подробности точно пригодятся. Как всегда ответ в итоге удалось получить методом научного тыка, а также несколько раз перечитав документации и комментарии MustBeDead. Делюсь результатами, используется библиотека Hybridauth. Провайдер для OpenID строится на основе уже готового класса Hybrid_Provider_Model_OpenID и занимает всего несколько строк. Выглядит он так <?phpclass Hybrid_Providers_WarGaming extends Hybrid_Provider_Model_OpenID{var $openidIdentifier = "http://ru.wargaming.net/id/";/*** finish login step*/function loginFinish(){parent::loginFinish();$this->user->profile->profileURL = $this->user->profile->identifier;// Отделяем из url ID пользователя, пригодится$this->user->profile->identifier = preg_replace( '/^[^0-9]+([0-9]+)-.+$/', '$1', $this->user->profile->identifier );Hybrid_Auth::storage()->set( "hauth_session.{$this->providerId}.user", $this->user );}}Этот код позволяет авторизоваться через Wargaming.Net OpenID и получить ссылку на профиль игрока, его ник и ID.В случае же авторизации через Public API пришлось описывать свой класс, на основе встроенного Hybrid_Provider_Model, так как это не OAuth (в случае OAuth код бы на порядок упростился и был бы чуть больше, чем в случае OpenID). Сам код провайдера я пока не готов предоставить, его еще надо вылизать и привести в полное соответствие с требования Public API (выход и продление токена). Пример такого класса можно увидеть в провайдере Facebook, который входит в состав Hybridauth "из коробки". После личного удовлетворения своим кодом, постараюсь выложить его здесь и наверное, отдам Hybridauth, когда можно будет. P.S. а почему бы не использовать стандартизированный OAuth2 ? Стандартный функционал OpenID вполне справляется с задачей, я думаю и стандартный OAuth2 тоже сможет сделать все, что хотите от авторизации, причем в более лучшей и наверняка удобной форме. P.S.S. перечитал описание OAuth - алгоритм очень схож с тем, что предоставляет Public API. Если я ошибаюсь, и это на самом деле все таки OAuth - приношу извенения, слишком мало опыта работы с таким функционалом.