Qt TwitterAPI的QOauth::接口
我正在尝试使用QOAuth对twitter的API进行身份验证 我目前的代码是:Qt TwitterAPI的QOauth::接口,qt,oauth,twitter,twitter-oauth,Qt,Oauth,Twitter,Twitter Oauth,我正在尝试使用QOAuth对twitter的API进行身份验证 我目前的代码是: oauthInterface->setConsumerKey(CONSUMER_KEY); oauthInterface->setConsumerSecret(CONSUMER_SECRET_KEY); oauthInterface->setRequestTimeout(10000); QOAuth::ParamMap reply = oauthInterface->requestToke
oauthInterface->setConsumerKey(CONSUMER_KEY);
oauthInterface->setConsumerSecret(CONSUMER_SECRET_KEY);
oauthInterface->setRequestTimeout(10000);
QOAuth::ParamMap reply = oauthInterface->requestToken("https://api.twitter.com/oauth/request_token", QOAuth::GET, QOAuth::HMAC_SHA1);
if(oauthInterface->error() == QOAuth::NoError)
{
token = reply.value(QOAuth::tokenParameterName());
tokenSecret = reply.value(QOAuth::tokenSecretParameterName());
qDebug() << "temporary token" << token << tokenSecret;
}
reply = oauthInterface->accessToken("https://api.twitter.com/oauth/access_token",QOAuth::GET, token, tokenSecret, QOAuth::HMAC_SHA1);
if(oauthInterface->error() == QOAuth::NoError)
{
qDebug() << "final token" << reply.value("screen_name") << reply.value(QOAuth::tokenParameterName()) << reply.value(QOAuth::tokenSecretParameterName());
}
else
{
qDebug() << "ERROR" << oauthInterface->error();
}`
使用QOAuth::POST而不是QOAuth::GET可以得到相同的结果
如何使用QOAuth获取访问令牌?当我设法解决自己的问题时,我在这里发布了解决方案: 事实上,为了获得访问权限,您需要一个pin,用户可以在 Hewever只有在请求临时令牌时设置oauth_callback=oob,才能获得此pin 我最终得到了以下代码:
oauthInterface->setConsumerKey(CONSUMER_KEY);
oauthInterface->setConsumerSecret(CONSUMER_SECRET_KEY);
oauthInterface->setRequestTimeout(10000);
QOAuth::ParamMap args;
args.insert("oauth_callback", "oob");
QOAuth::ParamMap reply = oauthInterface->requestToken("https://api.twitter.com/oauth/request_token", QOAuth::POST, QOAuth::HMAC_SHA1, args);
if(oauthInterface->error() == QOAuth::NoError)
{
token = reply.value(QOAuth::tokenParameterName());
tokenSecret = reply.value(QOAuth::tokenSecretParameterName());
qDebug() << "temporary token" << token << tokenSecret;
}
QString url = "https://api.twitter.com/oauth/authenticate";
url.append("?");
url.append(QOAuth::tokenParameterName() + "=" + token);
QDesktopServices::openUrl(QUrl(url));
QOAuth::ParamMap args2;
QString pin = QInputDialog::getText(this, "Pin", "Enter pin");
args2.insert("oauth_verifier", pin.toAscii()); //pin.toAscii());
reply = oauthInterface->accessToken("https://api.twitter.com/oauth/access_token", QOAuth::GET, token, tokenSecret, QOAuth::HMAC_SHA1, args2);
if(oauthInterface->error() == QOAuth::NoError)
{
qDebug() << "final token" << reply.value("screen_name") << reply.value(QOAuth::tokenParameterName()) << reply.value(QOAuth::tokenSecretParameterName());
}
else
{
qDebug() << "ERROR" << oauthInterface->error();
}
oauthInterface->setConsumerKey(消费者密钥);
OAuthiInterface->SetConsumerCret(消费者密钥);
oauthInterface->setRequestTimeout(10000);
QOAuth::ParamMap参数;
插入(“oauth_回调”、“oob”);
QOAuth::ParamMap reply=OAuthiInterface->requestToken(“https://api.twitter.com/oauth/request_token,QOAuth::POST,QOAuth::HMAC_SHA1,args);
如果(oauthInterface->error()==QOAuth::NoError)
{
token=reply.value(QOAuth::tokenParameterName());
tokenSecret=reply.value(QOAuth::tokenSecretParameterName());
qDebug()对于中间请求,它可能是,而不是。这取决于您的应用程序,正确的URL写在Twitter Developer的应用程序设置中。两者都被接受,只是做了不同的事情。人们应该参考Twitter的api。如果一个用户可以打开多个帐户,请使用authorize
oauthInterface->setConsumerKey(CONSUMER_KEY);
oauthInterface->setConsumerSecret(CONSUMER_SECRET_KEY);
oauthInterface->setRequestTimeout(10000);
QOAuth::ParamMap args;
args.insert("oauth_callback", "oob");
QOAuth::ParamMap reply = oauthInterface->requestToken("https://api.twitter.com/oauth/request_token", QOAuth::POST, QOAuth::HMAC_SHA1, args);
if(oauthInterface->error() == QOAuth::NoError)
{
token = reply.value(QOAuth::tokenParameterName());
tokenSecret = reply.value(QOAuth::tokenSecretParameterName());
qDebug() << "temporary token" << token << tokenSecret;
}
QString url = "https://api.twitter.com/oauth/authenticate";
url.append("?");
url.append(QOAuth::tokenParameterName() + "=" + token);
QDesktopServices::openUrl(QUrl(url));
QOAuth::ParamMap args2;
QString pin = QInputDialog::getText(this, "Pin", "Enter pin");
args2.insert("oauth_verifier", pin.toAscii()); //pin.toAscii());
reply = oauthInterface->accessToken("https://api.twitter.com/oauth/access_token", QOAuth::GET, token, tokenSecret, QOAuth::HMAC_SHA1, args2);
if(oauthInterface->error() == QOAuth::NoError)
{
qDebug() << "final token" << reply.value("screen_name") << reply.value(QOAuth::tokenParameterName()) << reply.value(QOAuth::tokenSecretParameterName());
}
else
{
qDebug() << "ERROR" << oauthInterface->error();
}