@de-dup-i-dipi

Qt и oauth авторизация?

Пишу небольшое приложение на с++, авторизация oauth2 через браузер. Для standalone рекомендуется использовать redirect_uri как oob. При подтверждении пользователю открывается окно с кодом. Как можно сделать, чтоб пользователю не пришлось копировать код и вставлять его в приложение, а по адресу приложение получило токен и поехало дальше? Я не нашел примеров с использованием oob, все завязаны только на использование localhost'a.

auto replyHandler = new QOAuthHttpServerReplyHandler(this);
oauth2.setReplyHandler(replyHandler);
oauth2.setAuthorizationUrl(QUrl("https://site.ru/oauth/authorize"));
oauth2.setAccessTokenUrl(QUrl("https://site.ru/oauth/token"));
oauth2.setClientIdentifier(QString("client_id"));
oauth2.setClientIdentifierSharedKey(QString("client_secret"));

oauth2.setModifyParametersFunction([](QAbstractOAuth::Stage stage, QVariantMap *parameters) {
    (*parameters)["redirect_uri"] = QUrl("urn:ietf:wg:oauth:2.0:oob");
});

connect(&oauth2, &QOAuth2AuthorizationCodeFlow::statusChanged, [=](QAbstractOAuth::Status status) {
    if (status == QAbstractOAuth::Status::Granted)
    {
        qDebug() << "Granted";    
    }
    else
    {
        qDebug() << "Not granted";
    }
});

connect(&oauth2, &QOAuth2AuthorizationCodeFlow::authorizeWithBrowser, &QDesktopServices::openUrl);
oauth2.grant();
  • Вопрос задан
  • 258 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы