Qt 桌面应用程序
一个为 Casdoor的 Qt桌面应用程序示例。
如何运行这个示例
前置要求
初始化
你需要初始化7个字符串参数:
| 名称 | 描述 | 文件 |
|---|---|---|
| endpoint | 您的 Casdoor 服务器主机/域 | mainwindow.h |
| client_id | 您的 Casdoor 应用程序的客户端 ID | mainwindow.h |
| client_secret | 你的Casdoor应用的客户端密钥 | mainwindow.h |
| certificate | Casdoor 应用程序证书的公钥 | mainwindow.h |
| org_name | 您的Casdoor应用程序的名称 | mainwindow.h |
| app_name | 您的Casdoor应用程序的名称 | mainwindow.h |
| redirect_url | 您的Casdoor 应用程序的回调URL路径将是 casdoor://callback 如果没有提供 | mainwindow.h |
如果你不设置endpoint参数,这个项目将使用http://localhost:8000作为默认的Casdoor服务器。
运行应用程序
使用Qt Creator
- 打开
casdoor-cpp-qt-example.pro - 在
casdoor-cpp-qt-example.pro中设置OpenSSL的INCLUDEPATH - 按
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()));
使用授权码获取用户信息
// 获取令牌并使用JWT库解析
std::string token = m_casdoor->GetOAuthToken(code.toStdString());
auto decoded = m_casdoor->ParseJwtToken(token);