This commit is contained in:
2019-10-02 23:55:46 +00:00
parent 6fccc7497d
commit f482c27cd7

View File

@@ -296,12 +296,20 @@ namespace AyaNova.PlugIn.QBOI
const string KAT = "xZ\v\nQ\a(\fN\nX\0\a}\vO[\vZTV_\fWQ,\vV\v-";
const string KOACS = "Y?,V\f1^\0\r+\v!<0-1$\n7-9\fV\0?%#3";
//oAuth2 new variables
public static Intuit.Ipp.OAuth2PlatformClient.OAuth2Client oac = null;
const string Q2_CLIENT_ID = "ABj70Wv5gDauFd9KgKFwuvpQjfzTwEgodEG8tnBbS8mSQhNrZJ";
const string Q2_CLIENT_SECRET = "XUmJyvEcEuwQuyhARUAm0a8G3gzbEAeMiATCLyFZ";
const string Q2_REDIRECT_URL = "https://qboauth.ayanova.com/redirect";
const string Q2_ENVIRONMENT = "Sandbox";
const double Q2_TOKEN_LIFESPAN_MINUTES = 45;//Minutes to hold on to access token before refreshing. Right now oct 2019 it's one hour lifespan.
static string QBOI2_SESSION_TOKEN = "";
public static string ACCESS_TOKEN { get; set; }
public static string REFRESH_TOKEN { get; set; }
public static string REALM_ID { get; set; }
public static DateTime TOKEN_BIRTHDAY { get; set; }
//simple xor encryption
private static string Ec(string text, string key)
@@ -363,6 +371,31 @@ namespace AyaNova.PlugIn.QBOI
}
}
/// <summary>
/// Refresh token if necessary, call this regularly
/// will check if access token is approaching expiry (1 hour)
/// and will refresh as necessary
/// </summary>
public static void RefreshTokens()
{
DateTime dtExpireAfter=DateTime.Now.AddMinutes( Q2_TOKEN_LIFESPAN_MINUTES);
if (TOKEN_BIRTHDAY < dtExpireAfter)
{
return;
}
//refresh token here
var v= oac.RefreshTokenAsync(REFRESH_TOKEN).Result;
TOKEN_BIRTHDAY = DateTime.Now;
ACCESS_TOKEN = v.AccessToken;
REFRESH_TOKEN = v.RefreshToken;
}
static ServiceContext SC = null;
//static DesktopIppOAuth.OAuthConnector CN;
@@ -411,13 +444,15 @@ namespace AyaNova.PlugIn.QBOI
}
* */
string ACCESS_TOKEN = j["access_token"].Value<string>();
string REFRESH_TOKEN = j["refresh_token"].Value<string>();
string REALM_ID = j["realmId"].Value<string>();
ACCESS_TOKEN = j["access_token"].Value<string>();
REFRESH_TOKEN = j["refresh_token"].Value<string>();
REALM_ID = j["realmId"].Value<string>();
///***************************************** TESTING FIX THIS LATER ***********************
TOKEN_BIRTHDAY = DateTime.Now.AddMinutes(-90);//TESTING TESTING TESTING
//NOTE: this app will handle refreshing the token in-session as apparently that's possible from here, maybe should test that or could simply just refresh via our server
Intuit.Ipp.OAuth2PlatformClient.OAuth2Client oac = new OAuth2Client(Q2_CLIENT_ID, Q2_CLIENT_SECRET, Q2_REDIRECT_URL, Q2_ENVIRONMENT);
oac = new OAuth2Client(Q2_CLIENT_ID, Q2_CLIENT_SECRET, Q2_REDIRECT_URL, Q2_ENVIRONMENT);
//case 3669
//https://help.developer.intuit.com/s/question/0D50f00005gFeqpCAC/how-do-i-suddenly-get-there-was-an-error-while-communicating-with-the-ids-server
@@ -563,7 +598,7 @@ namespace AyaNova.PlugIn.QBOI
}
}
RefreshTokens();
IntegrationLog.Log(QBID, "PFC: Authentication completed, validating company data");