【发布时间】:2017-02-24 12:25:21
【问题描述】:
使用QOAuth2AuthorizationCodeFlow通过google的oauth2进行授权。授权成功,同时使用GET请求(例如,从youtube频道获取视频列表)。
但是虽然QNetworkAccessManager 为用户提供了一堆post 方法重载:
QNetworkReply * post(const QNetworkRequest &request, QIODevice *data)
QNetworkReply * post(const QNetworkRequest &request, const QByteArray &data)
QNetworkReply * post(const QNetworkRequest &request, QHttpMultiPart *multiPart)
QOAuth2AuthorizationCodeFlow 只有:
QNetworkReply *post(const QUrl &url, const QVariantMap ¶meters = QVariantMap());
使用QHttpMultiPart 和QHttpPart::setBodyDevice() 可以轻松附加文件。但我不确定如何使用QVariantMap 进行视频/文件上传。
另外,尝试使用:QOAuth2AuthorizationCodeFlow::networkAccessManager() 来访问底层网络管理器,但它提供了带有GET 的 202 响应代码。并且,如果使用经过身份验证的 url,QOAuth2AuthorizationCodeFlow::createAuthenticatedUrl(),则响应代码为 200,但回复内容为空(readAll() 返回空缓冲区)。也不适用于POST。
使用QT 2nd day,所以我可能会误解一些概念。感谢您提供任何帮助和想法。
【问题讨论】:
-
很高兴有人提出这个问题。
-
只是好奇您是否不介意为此提供完整的代码。我会反过来赠送一些声誉作为感谢。由于缺乏文档,我在这方面遇到了一些麻烦。
-
@Akiva 代码不是很漂亮,但它确实为我上传了一个视频github.com/x4t3a/YoutubeUploader/blob/master/…
标签: c++ qt google-oauth qnetworkrequest