void FbTalker::parseExchangeSession(const QByteArray& data) { int errCode = -1; QString errMsg; bool ok; QJson::Parser parser; kDebug() << "Parse exchange_session response:" << endl << data; QVariantList result = parser.parse (data, &ok).toList(); if(ok) { QVariantMap session = result[0].toMap(); m_accessToken = session["access_token"].toString(); m_sessionExpires = session["expires"].toUInt(); if( m_sessionExpires != 0 ) { #if QT_VERSION >= 0x40700 m_sessionExpires += QDateTime::currentMSecsSinceEpoch() / 1000; #else m_sessionExpires += QDateTime::currentDateTime().toTime_t(); #endif } if( m_accessToken.isEmpty() ) // Session did not convert. Reauthenticate. doOAuth(); else // Session converted to OAuth. Proceed normally. getLoggedInUser(); } else { authenticationDone(errCode, errorToText(errCode, errMsg)); } }
void FbTalker::authenticate(const QString &accessToken, unsigned int sessionExpires) { m_loginInProgress = true; if (!accessToken.isEmpty() && ( sessionExpires == 0 || sessionExpires > (unsigned int)(time(0) + 900) ) ) { // sessionKey seems to be still valid for at least 15 minutes // - check if it still works m_accessToken = accessToken; m_sessionExpires = sessionExpires; emit signalLoginProgress(2, 9, i18n("Validate previous session...")); // get logged in user - this will check if session is still valid getLoggedInUser(); } else { // session expired -> get new authorization token and session doOAuth(); } }
void DBTalker::parseResponseRequestToken(const QByteArray& data) { QString temp = QString::fromUtf8(data); QStringList split = temp.split(QString::fromLatin1("&")); QStringList tokenSecretList = split.at(0).split(QString::fromLatin1("=")); m_oauthTokenSecret = tokenSecretList.at(1); QStringList tokenList = split.at(1).split(QString::fromLatin1("=")); m_oauthToken = tokenList.at(1); m_access_oauth_signature = m_oauth_signature + m_oauthTokenSecret; doOAuth(); }
void Authorize::parseResponseRefreshToken(const QByteArray& data) { m_access_token = getValue(data,"access_token"); if(getValue(data,"error") == "invalid_request" || getValue(data,"error") == "invalid_grant") { doOAuth(); return; } m_bearer_access_token = "Bearer " + m_access_token; kDebug() << "In parse GD_ACCESSTOKEN" << m_bearer_access_token << " " << data; emit signalAccessTokenObtained(); }
void Authorize::parseResponseRefreshToken(const QByteArray& data) { m_access_token = getValue(QString::fromUtf8(data), QString::fromLatin1("access_token")); if (getValue(QString::fromUtf8(data), QString::fromLatin1("error")) == QString::fromLatin1("invalid_request") || getValue(QString::fromUtf8(data), QString::fromLatin1("error")) == QString::fromLatin1("invalid_grant")) { doOAuth(); return; } m_bearer_access_token = QString::fromLatin1("Bearer ") + m_access_token; qCDebug(KIPIPLUGINS_LOG) << "In parse GD_ACCESSTOKEN" << m_bearer_access_token << " " << data; emit signalAccessTokenObtained(); }
void FbTalker::parseResponseGetLoggedInUser(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("getLoggedInUser"); if (!doc.setContent(data)) return; emit signalLoginProgress(4); kDebug() << "Parse GetLoggedInUser response:" << endl << data; QDomElement docElem = doc.documentElement(); if (docElem.tagName() == "users_getLoggedInUser_response") { m_user.id = docElem.text().toLongLong(); errCode = 0; } else if (docElem.tagName() == "error_response") errCode = parseErrorResponse(docElem, errMsg); if (errCode == 0) { // session is still valid -> get full user info getUserInfo(); } else { // it seems that session expired -> create new token and session m_accessToken.clear(); m_sessionExpires = 0; m_user.clear(); doOAuth(); } }