You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Qt QNetworkAccessManager实现Bearer认证时遇400错误如何解决?

Qt调用OLX API Bearer认证返回"Invalid owner in token"的解决思路

问题重现

在Qt应用中使用QNetworkAccessManager调用OLX接口时,执行Bearer认证后收到错误:

{"error":{"status":400,"title":"Bad Request","detail":"Invalid owner in token"}}

使用的代码如下:

QNetworkAccessManager *manager = new QNetworkAccessManager;
QEventLoop loop;
QObject::connect(manager, &QNetworkAccessManager::finished, &loop,
                 &QEventLoop::quit);
const QUrl url("https://www.olx.ua/api/partner/threads");
QNetworkRequest request {url};
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QString temp = "Bearer " + marketplaceAccessToken;
request.setRawHeader("Authorization", temp.toLocal8Bit());
request.setRawHeader("Version", "2.0");
QNetworkReply *reply = manager->get(request);
loop.exec();

QByteArray dataReply = reply->readAll();
qDebug() << dataReply;

解决方向

  • 确认令牌的归属与权限:该错误核心是令牌所有者与请求接口不匹配。检查marketplaceAccessToken对应的账号是否有权访问/api/partner/threads接口,同时确认令牌是针对OLX乌克兰站点(olx.ua)生成的,不同区域OLX的令牌不通用。
  • 验证令牌有效性:先排除令牌本身的问题,用curl直接测试:
    curl -H "Authorization: Bearer YOUR_TOKEN" -H "Version: 2.0" https://www.olx.ua/api/partner/threads
    
    如果curl返回同样错误,说明问题出在令牌而非Qt代码,需到OLX开发者后台重新生成或校验令牌。
  • 核对接口端点:确认请求URL是否正确,比如是否应该使用api.olx.ua而非www.olx.ua,部分OLX接口要求特定子域名;同时检查是否遗漏了接口所需的区域或其他参数。
  • 修正Qt代码细节:
    • 确保marketplaceAccessToken变量完整赋值,无截断或乱码,可在设置请求头前打印temp值确认格式为Bearer + 有效令牌。
    • 将toLocal8Bit()替换为toUtf8(),避免编码问题导致令牌解析错误:
      request.setRawHeader("Authorization", temp.toUtf8());
      
  • 检查请求头完整性:确认是否有其他必填请求头(如User-Agent、区域标识等)未设置,部分OLX API会依赖这些信息验证请求合法性。

内容的提问来源于stack exchange,提问作者Orest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:05:18