我尝试使用Access Token从我的Qt应用程序实现GitHub身份验证。通过提供URL(在我的情况下为https://api.github.com/notifications)和访问在GitHub上生成的令牌(Postman
){{3},我可以使用Settings/Developer settings/Personal access tokens
毫无问题地连接到GitHub。 }。现在我想使用Qt来做同样的事情,但是找不到如何做的例子。 Qt文档中有Reddit(https://github.com/settings/tokens)的示例,但是它使用了一些重定向算法,而不是访问令牌:
auto replyHandler = new QOAuthHttpServerReplyHandler(1337, this);
oauth2.setReplyHandler(replyHandler);
oauth2.setAuthorizationUrl(QUrl("https://www.reddit.com/api/v1/authorize"));
oauth2.setAccessTokenUrl(QUrl("https://www.reddit.com/api/v1/access_token"));
我不知道如何使用提供的访问令牌进行相同操作。
答案 0 :(得分:1)
如果您要使用个人令牌,则无需实现OAuth / OAuth2逻辑,因为事务的第一部分是获取令牌,但OP已经拥有它。如果您有令牌,则只需要请求其余的API:
#include <QByteArray>
#include <QCoreApplication>
#include <QJsonDocument>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QTimer>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
const QString username = "<username>";
const QString token = "<token>";
const QByteArray basic_authorization = QByteArray("Basic ") + (username + ":" + token).toUtf8().toBase64();
QNetworkRequest request;
request.setRawHeader(QByteArrayLiteral("Authorization"), basic_authorization);
QUrl url("https://api.github.com/notifications");
request.setUrl(url);
QNetworkAccessManager manager;
QNetworkReply *reply = manager.get(request);
QObject::connect(reply, &QNetworkReply::finished, [reply](){
QJsonDocument doc = QJsonDocument::fromJson(reply->readAll());
qDebug() << doc;
QTimer::singleShot(1000, &QCoreApplication::quit);
});
return a.exec();
}