El proyecto es de código abierto. No lo he utilizado. Pero utiliza un algoritmo documentado (que figura en la RFC que aparece en la página del proyecto de código abierto), y las implementaciones del autentificador admiten múltiples cuentas.
El proceso actual es sencillo. El código de una sola vez es, esencialmente, un generador de números pseudoaleatorios. Un generador de números aleatorios es una fórmula que, una vez dada una semilla, o número inicial, sigue creando un flujo de números aleatorios. Dada una semilla, aunque los números pueden ser aleatorios entre sí, la secuencia en sí es determinista. Por lo tanto, una vez que el dispositivo y el servidor están "sincronizados", los números aleatorios que crea el dispositivo, cada vez que se pulsa el "botón de número siguiente", serán los mismos números aleatorios que espera el servidor.
Un sistema de contraseña segura de un solo uso es más sofisticado que un generador de números aleatorios, pero el concepto es similar. También hay otros detalles que ayudan a mantener el dispositivo y el servidor sincronizados.
Por lo tanto, no hay necesidad de que alguien más albergue la autenticación, como, por ejemplo, OAuth. En su lugar, es necesario implementar ese algoritmo que es compatible con las aplicaciones que Google proporciona para los dispositivos móviles. Ese software está (debería estar) disponible en el proyecto de código abierto.
Dependiendo de su sofisticación, debería tener todo lo que necesita para implementar el lado del servidor de este proceso dar el proyecto OSS y el RFC. No sé si hay una implementación específica para su software de servidor (PHP, Java, .NET, etc.)
Pero, en concreto, no necesitas un servicio externo para gestionar esto.