This commit is contained in:
@@ -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 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";
|
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_ID = "ABj70Wv5gDauFd9KgKFwuvpQjfzTwEgodEG8tnBbS8mSQhNrZJ";
|
||||||
const string Q2_CLIENT_SECRET = "XUmJyvEcEuwQuyhARUAm0a8G3gzbEAeMiATCLyFZ";
|
const string Q2_CLIENT_SECRET = "XUmJyvEcEuwQuyhARUAm0a8G3gzbEAeMiATCLyFZ";
|
||||||
const string Q2_REDIRECT_URL = "https://qboauth.ayanova.com/redirect";
|
const string Q2_REDIRECT_URL = "https://qboauth.ayanova.com/redirect";
|
||||||
const string Q2_ENVIRONMENT = "Sandbox";
|
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 = "";
|
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
|
//simple xor encryption
|
||||||
private static string Ec(string text, string key)
|
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 ServiceContext SC = null;
|
||||||
//static DesktopIppOAuth.OAuthConnector CN;
|
//static DesktopIppOAuth.OAuthConnector CN;
|
||||||
@@ -411,13 +444,15 @@ namespace AyaNova.PlugIn.QBOI
|
|||||||
}
|
}
|
||||||
* */
|
* */
|
||||||
|
|
||||||
string ACCESS_TOKEN = j["access_token"].Value<string>();
|
ACCESS_TOKEN = j["access_token"].Value<string>();
|
||||||
string REFRESH_TOKEN = j["refresh_token"].Value<string>();
|
REFRESH_TOKEN = j["refresh_token"].Value<string>();
|
||||||
string REALM_ID = j["realmId"].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
|
//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
|
//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
|
//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");
|
IntegrationLog.Log(QBID, "PFC: Authentication completed, validating company data");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user