Qt Desktop App
Приклад десктопного додатку Qt для Casdoor.
Як запустити приклад
Передумови
Ініціалізація
Вам потрібно ініціалізувати 7 рядкових параметрів:
| Назва | Опис | Файл |
|---|---|---|
| endpoint | Хост/домен вашого сервера Casdoor | mainwindow.h |
| client_id | Client ID вашого додатку Casdoor | mainwindow.h |
| client_secret | Client Secret вашого додатку Casdoor | mainwindow.h |
| certificate | Публічний ключ для сертифіката додатку Casdoor | mainwindow.h |
| org_name | Назва вашої організації Casdoor | mainwindow.h |
| app_name | Назва вашого додатку Casdoor | mainwindow.h |
| redirect_url | Шлях до URL зворотного виклику для вашого додатку Casdoor, буде http://localhost:8080/callback, якщо не вказано | mainwindow.h |
Якщо ви не встановите параметр endpoint, цей проект використовуватиме http://localhost:8000 як сервер Casdoor за замовчуванням.
Запуск додатку
Використання Qt Creator
- Відкрити
casdoor-cpp-qt-example.pro - Встановити
INCLUDEPATHOpenSSL уcasdoor-cpp-qt-example.pro - Натисніть
Ctrl + R, щоб почати
Попередній перегляд
Після запуску цього десктопного додатку Qt, нове вікно буде показано на вашому робочому столі.

Якщо ви натиснете кнопку Sign In, вікно входу буде показано на вашому робочому столі.

Після успішного входу, вікно профілю користувача буде показано на вашому робочому столі, відображаючи вашу інформацію користувача.

Ви можете переглянути весь процес у наступному GIF зображенні.

Як інтегрувати
Відкриття вікна входу
// Load and display the login page of Casdoor
m_webview->page()->load(*m_signin_url);
m_webview->show();
Слухання події відкриття додатку
// Initialize the TcpServer object and listen on port 8080
m_tcpserver = new QTcpServer(this);
if (!m_tcpserver->listen(QHostAddress::LocalHost, 8080)) {
qDebug() << m_tcpserver->errorString();
close();
}
connect(m_tcpserver, SIGNAL(newConnection()), this, SLOT(on_tcp_connected()));
Використання Auth Code для отримання інформації користувача
// Get the token and parse it with the JWT library
std::string token = m_casdoor->GetOAuthToken(code.toStdString());
auto decoded = m_casdoor->ParseJwtToken(token);