【问题标题】:Twitter api error "code 32 Could not authenticate you" when trying to upload images尝试上传图片时出现 Twitter api 错误“代码 32 无法验证您”
【发布时间】:2019-01-05 07:09:43
【问题描述】:

我正在尝试将照片从我的应用上传到 Twitter,并且我正在使用 https://github.com/pipacs/o2 库进行 OAuth。

以下是我正在使用的代码:

QFile file(imgPath);
if (!file.open(QIODevice::ReadOnly))
    {
        return false;
    }
QByteArray m_buffer = file.readAll();

O1Requestor* requestor = new O1Requestor(d->netMngr, d->o1Twitter, this);
QList<O0RequestParameter> reqParams = QList<O0RequestParameter>();

reqParams << O0RequestParameter(QByteArray("media"), m_buffer);
reqParams << O0RequestParameter(QByteArray("media_type"), QByteArray("image/jpeg"));

QByteArray postData = O1::createQueryParameters(reqParams);

QUrl url = QUrl("https://upload.twitter.com/1.1/media/upload.json");
QNetworkRequest request(url);

request.setHeader(QNetworkRequest::ContentTypeHeader, O2_MIME_TYPE_XFORM);
QNetworkReply *reply = requestor->post(request, reqParams, postData);

结果如下:

错误:“主机需要身份验证” 内容:"{"errors":[{"code":32,"message":"Could not authenticate you."}]}"

我尝试做一些简单的事情,比如发布一条说 Hello 的推文,以使用 statuses/update 端点测试身份验证,并且没有错误。 如果需要,以下是代码:

QUrl url2 = QUrl("https://api.twitter.com/1.1/statuses/update.json);

reqParams = QList<O0RequestParameter>();
reqParams << O0RequestParameter(QByteArray("status"), "Hello");
postData = O1::createQueryParameters(reqParams);

request.setUrl(url2);
request.setHeader(QNetworkRequest::ContentTypeHeader, O2_MIME_TYPE_XFORM);
QNetworkReply *reply = requestor->post(request, reqParams, postData);

你能帮我解决这个问题吗? 谢谢

【问题讨论】:

    标签: qt authentication twitter oauth twitter-oauth


    【解决方案1】:

    类似于this 的答案,您需要确保m_buffer 中的图像内容以base-64 编码字符串的形式发送。否则,Twitter API 将返回错误 32。

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 2013-09-08
      • 2016-11-21
      • 2019-05-18
      • 2020-12-08
      • 2014-05-01
      • 2017-06-30
      • 2014-05-06
      • 1970-01-01
      相关资源
      最近更新 更多