Если я правильно понимаю, вы хотите создать библиотеку, которая будет поддерживать все это одновременно?Таким образом, пользователь A может войти в систему через OAuth, а пользователь B - через OpenID?И библиотеку, которую вы создаете, нужно использовать для обеспечения простых «односторонних вызовов»?
Я реализовал нечто подобное (для драйверов с короткими URL) в простой среде для XenForo.Я сделал это путем создания универсального класса с функцией «shortten ($ url, $ method)» и динамически проверил, чтобы убедиться, что драйвер метода существует в указанном каталоге (XenForo имеет функцию автозагрузки Zend Framework, поэтому мы используем ее) ивызовы функций построения.Затем я передаю необходимую информацию (только $ url) и позволяю драйверу получить эту информацию.
Если вы храните всю необходимую информацию у пользователя, вы можете иметь поле базы данных «extraData» со всей необходимой информацией дляуказанный «метод» сериализован или хранится унифицированным способом, который может быть передан драйверу.
Мой со-разработчик и я решили абстрагировать его настолько, чтобы мы могли выпустить его, а любой другой разработчиклегко добавлять и устанавливать новые драйверы для фреймворка.Я могу предоставить пример кода, если вы хотите, но он включает в себя несколько специфических элементов XenForo.Кстати, мне нравится, как он работает, и я могу реализовать его не специфичным для XenForo методом.