尝试上传图像时,T​​witter api错误“代码32无法对您进行身份验证”

时间:2018-07-28 09:54:40

标签: qt authentication twitter oauth twitter-oauth

我正在尝试将照片从我的应用程序上传到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);

结果如下:

  

错误:“主机需要身份验证”       内容:“ {”错误“:[{”代码“:32,”消息“:”无法验证您的身份。“}]}”

我尝试做一些简单的事情,例如发布一条推文,说“你好”,以使用状态/更新端点测试身份验证,并且没有错误。 以下也是代码(如果需要):

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);

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

1 个答案:

答案 0 :(得分:0)

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