// URL の設定、取得 TEST( OAuthTest, OAuthUrl ) { OAuthUrlMaker oauth( "", "" ); oauth.SetOAuthUrl( "cacoo.com", "/oauth/", true ); EXPECT_EQ( std::string( "https://cacoo.com/oauth/request_token" ), oauth.GetOAuthUrl( "request_token" ) ); }
void crossTweeter::doRESTPullRequest(){ QMap<QString, QString> parameters; parameters.insert("count", "200"); if(since_id != 0) parameters.insert("since_id", QString::number(since_id)); if(max_id != 0) parameters.insert("max_id", QString::number(max_id)); OAuthRequest oauth(CONSUMERKEY, CONSUMERSECRET, TOKENKEY, TOKENSECRET); parameters.insert("user_id", FOLLOWSTRING); parameters.insert("trim_user", "true"); oauth.setGetParameters(parameters); oauth.setRequestDestination("GET", "https://api.twitter.com/1.1/statuses/user_timeline.json"); oauth.sign(); QNetworkRequest request = QNetworkRequest(QUrl(formatGetString("https://api.twitter.com/1.1/statuses/user_timeline.json", parameters))); request.setRawHeader(QString("Authorization").toAscii(), oauth.getHeaderString().toAscii()); resetNetworkRequest(&request); qDebug()<<"sending REST-Request since"<<since_id<<"max"<<max_id; pullManager->get(request); }
void setup_network_stream() { std::string consumer_key = std::getenv("tw_consumer_key"); std::string consumer_secret = std::getenv("tw_consumer_secret"); std::string oauth_token = std::getenv("tw_oauth_token"); std::string oauth_token_secret = std::getenv("tw_oauth_token_secret"); std::string tw_stream_params = "track=" + tw_term; OAuth::Consumer consumer(consumer_key, consumer_secret); OAuth::Token token(oauth_token, oauth_token_secret); OAuth::Client oauth(&consumer, &token); std::string oAuthHeader = oauth.getHttpHeader( OAuth::Http::Post, tw_stream_url, tw_stream_params); int tweet_max = 13; int tweet_count; ahjs::AsyncHttpsJsonStream c( io_service, io_context, tw_stream_host, tw_stream_port, tw_stream_endpoint, oAuthHeader, tw_stream_params, [&tweet_max, &tweet_count] (const std::string& json) { // std::cout << json << '\n'; picojson::value v; std::string err = picojson::parse(v, json); if (!err.empty()) { std::cerr << err << std::endl; } else { extract_image_urls(v); } } ); io_service.run(); }
void RequestTokenJob::start() { QOAuth::Interface oauth(this); oauth.setConsumerKey(CONSUMER_KEY); oauth.setConsumerSecret(CONSUMER_SECRET); QOAuth::ParamMap map = oauth.requestToken(REQUEST_TOKEN_URL, QOAuth::POST, QOAuth::HMAC_SHA1); QByteArray oauthToken, oauthTokenSecret; bool success = false; if (oauth.error() == 200) { oauthToken = map.value (QOAuth::tokenParameterName()); oauthTokenSecret = map.value (QOAuth::tokenSecretParameterName()); success = true; } emit finished(success, oauthToken, oauthTokenSecret); }
TRequestToken OsmOAuth::FetchRequestToken() const { OAuth::Consumer const consumer(m_consumerKeySecret.first, m_consumerKeySecret.second); OAuth::Client oauth(&consumer); string const requestTokenUrl = m_baseUrl + "/oauth/request_token"; string const requestTokenQuery = oauth.getURLQueryString(OAuth::Http::Get, requestTokenUrl + "?oauth_callback=oob"); HttpClient request(requestTokenUrl + "?" + requestTokenQuery); if (!request.RunHttpRequest()) MYTHROW(NetworkError, ("FetchRequestToken Network error while connecting to", request.UrlRequested())); if (request.ErrorCode() != HTTP::OK) MYTHROW(FetchRequestTokenServerError, (DebugPrint(request))); if (request.WasRedirected()) MYTHROW(UnexpectedRedirect, ("Redirected to", request.UrlReceived(), "from", request.UrlRequested())); // Throws std::runtime_error. OAuth::Token const reqToken = OAuth::Token::extract(request.ServerResponse()); return { reqToken.key(), reqToken.secret() }; }
TKeySecret OsmOAuth::FinishAuthorization(TRequestToken const & requestToken, string const & verifier) const { OAuth::Consumer const consumer(m_consumerKeySecret.first, m_consumerKeySecret.second); OAuth::Token const reqToken(requestToken.first, requestToken.second, verifier); OAuth::Client oauth(&consumer, &reqToken); string const accessTokenUrl = m_baseUrl + "/oauth/access_token"; string const queryString = oauth.getURLQueryString(OAuth::Http::Get, accessTokenUrl, "", true); HttpClient request(accessTokenUrl + "?" + queryString); if (!request.RunHttpRequest()) MYTHROW(NetworkError, ("FinishAuthorization Network error while connecting to", request.UrlRequested())); if (request.ErrorCode() != HTTP::OK) MYTHROW(FinishAuthorizationServerError, (DebugPrint(request))); if (request.WasRedirected()) MYTHROW(UnexpectedRedirect, ("Redirected to", request.UrlReceived(), "from", request.UrlRequested())); OAuth::KeyValuePairs const responseData = OAuth::ParseKeyValuePairs(request.ServerResponse()); // Throws std::runtime_error. OAuth::Token const accessToken = OAuth::Token::extract(responseData); return { accessToken.key(), accessToken.secret() }; }
OsmOAuth::Response OsmOAuth::Request(string const & method, string const & httpMethod, string const & body) const { if (!IsValid(m_tokenKeySecret)) MYTHROW(InvalidKeySecret, ("User token (key and secret) are empty.")); OAuth::Consumer const consumer(m_consumerKeySecret.first, m_consumerKeySecret.second); OAuth::Token const oatoken(m_tokenKeySecret.first, m_tokenKeySecret.second); OAuth::Client oauth(&consumer, &oatoken); OAuth::Http::RequestType reqType; if (httpMethod == "GET") reqType = OAuth::Http::Get; else if (httpMethod == "POST") reqType = OAuth::Http::Post; else if (httpMethod == "PUT") reqType = OAuth::Http::Put; else if (httpMethod == "DELETE") reqType = OAuth::Http::Delete; else MYTHROW(UnsupportedApiRequestMethod, ("Unsupported OSM API request method", httpMethod)); string url = m_apiUrl + kApiVersion + method; string const query = oauth.getURLQueryString(reqType, url); auto const qPos = url.find('?'); if (qPos != string::npos) url = url.substr(0, qPos); HttpClient request(url + "?" + query); if (httpMethod != "GET") request.SetBodyData(body, "application/xml", httpMethod); if (!request.RunHttpRequest()) MYTHROW(NetworkError, ("Request Network error while connecting to", url)); if (request.WasRedirected()) MYTHROW(UnexpectedRedirect, ("Redirected to", request.UrlReceived(), "from", url)); return Response(request.ErrorCode(), request.ServerResponse()); }