2012-07-11 24 views
1

我想通過QOAuth獲得twitter的API認證。QOauth :: Twitter API的接口

我的代碼目前是:

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(); 
}` 

,給我

temporary token "cBhxmmdkYgmghyy02kmfc0VSIuykRCNoQRh2h1r3Yg" "oYF8b2lzPSgDTRku8X4BjjnoVw5dAXXZBXc2R9P8Jk" 
ERROR 401 

使用QOAuth :: POST而不是QOAuth ::得到我有同樣的結果

我怎樣使用QOAuth獲取訪問令牌?

回答

2

當我設法解決我自己的probleme我張貼在這裏的解決方案:

事實是,對於beeing到https://api.twitter.com/oauth/access_token授予訪問權限需要可以由用戶在https://api.twitter.com/oauth/authenticate

Hewever獲得銷

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(); 
    } 
012:如果您在 https://api.twitter.com/oauth/request_token

要求臨時記號我finaly結束了與下面的代碼時設置oauth_callback = OOB你只能得到這個引腳

+1

對於中間請求,它可能是https://api.twitter.com/oauth/authorize而不是https://api.twitter.com/oauth/authenticate。這取決於您的應用程序正確的URL是在Twitter開發人員的應用程序設置中編寫的。 – 2012-07-12 00:01:01

+0

兩人都被接受,他們只是做不同的事情。人們應該參考twitter的api。如果一個用戶可能打開多個帳戶,請使用授權 – Amxx 2012-07-12 10:26:45