我使用twitcurl到OAuth twitter并发送直接消息。我设置了所有键:
twitCurl twitterObj;
twitterObj.getOAuth().setConsumerKey(t_consumer_key);
twitterObj.getOAuth().setConsumerSecret(t_consumer_secret);
twitterObj.getOAuth().setOAuthTokenKey(t_access_token);
twitterObj.getOAuth().setOAuthTokenSecret(t_access_token_secret);
twitterObj.accountVerifyCredGet();
The twitterObj.getLastWebResponse(replyMsg); return error 89:
<error code="89">Invalid or expired token</error>
我可以使用访问令牌而不是用户名/密码访问 Oauth 吗?
PS:访问级别为"读,写和直接消息"
我使用下一个调用序列:
//#define IF_FALSE_RETURN( a ) if(!a) { log("TwitterClient authorizetion failed!"); return;}
twitterCurl->setTwitterUsername(usr);
twitterCurl->setTwitterPassword(pwd);
twitterCurl->getOAuth().setConsumerKey(twitterConsumerKey);
twitterCurl->getOAuth().setConsumerSecret(twitterConsumerSecret);
std::string authorizedUrl;
IF_FALSE_RETURN( twitterCurl->oAuthRequestToken(authorizedUrl) );
IF_FALSE_RETURN( twitterCurl->oAuthHandlePIN(authorizedUrl) );
IF_FALSE_RETURN( twitterCurl->oAuthAccessToken() );
twitterCurl->getOAuth().getOAuthTokenKey(accessTokenTwitter);
twitterCurl->getOAuth().getOAuthTokenSecret(accessSecretTwitter);
IF_FALSE_RETURN - 非常重要!如果一个方法返回 false,则调用可以返回 true 并分配令牌和机密,但用户授权失败。