Хитрость заключается в создании гибридного процесса аутентификации. Вы регистрируете веб-приложение в своем домене, авторизуете пользователей для веб-приложения с помощью процесса OAuth for Web Apps, а затем внедряете механизм, с помощью которого их установленное приложение может получить эту авторизацию из веб-приложения.
Я думаю, что установленное приложение отправит на ваш сайт запрос на пару ключей. Он получит ключ инициализации и ключ авторизации, которые вы сохраните в базе данных на веб-сайте для одноразового использования.
Приложение будет использовать любой механизм для запуска внешнего браузера, указывая на
yourdomain.com/authorizestart.php?initiate=[initiate code]. Сайт сохраняет код в переменной сеанса, а затем отправляет пользователя в Google для аутентификации. Когда аутентификация успешна и Google отправляет пользователя обратно со следующим токеном, вы сохраняете его в записи базы данных, связанной с ключом инициации.
Пользователь закрывает браузер, нажимает кнопку «Готово» в вашем приложении, а затем приложение отправляет запрос на yourdomain.com/tokenretrieve.php?authorize=[authorize key]
Ваш сайт ищет токен Google и передает его обратно, приложение завершает процесс Oauth.
Проблема заключается в том, что вы должны поделиться с приложением «секретом потребителя», который вы создали в процессе регистрации. Кто-то может декомпилировать его или попытаться перехватить его вывод и обнаружить ваш секретный ключ, который является частью метода шифрования ответов от серверов Google. Тем не менее, как это хуже, чем использовать «анонимный» в качестве секрета своего потребителя?