This commit is contained in:
@@ -18,6 +18,11 @@ namespace qbridge.Controllers
|
|||||||
public const string CLIENT_ID = "ABj70Wv5gDauFd9KgKFwuvpQjfzTwEgodEG8tnBbS8mSQhNrZJ";
|
public const string CLIENT_ID = "ABj70Wv5gDauFd9KgKFwuvpQjfzTwEgodEG8tnBbS8mSQhNrZJ";
|
||||||
public const string CLIENT_SECRET = "XUmJyvEcEuwQuyhARUAm0a8G3gzbEAeMiATCLyFZ";
|
public const string CLIENT_SECRET = "XUmJyvEcEuwQuyhARUAm0a8G3gzbEAeMiATCLyFZ";
|
||||||
public const string REDIRECT_URI = "https://localhost:5001/OAuthRedirect";
|
public const string REDIRECT_URI = "https://localhost:5001/OAuthRedirect";
|
||||||
|
public const string DISCOVERY_DOCUMENT_URL = "https://developer.api.intuit.com/.well-known/openid_sandbox_configuration";
|
||||||
|
|
||||||
|
//current 2019 fall disco doc urls
|
||||||
|
//Sandbox: https://developer.api.intuit.com/.well-known/openid_sandbox_configuration
|
||||||
|
//Production: https://developer.api.intuit.com/.well-known/openid_configuration
|
||||||
|
|
||||||
//used for discovery document
|
//used for discovery document
|
||||||
//https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-3.0
|
//https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-3.0
|
||||||
@@ -167,7 +172,6 @@ namespace qbridge.Controllers
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
Actual response example:
|
Actual response example:
|
||||||
|
|
||||||
|
|
||||||
TOKEN: {
|
TOKEN: {
|
||||||
"x_refresh_token_expires_in": 8726400,
|
"x_refresh_token_expires_in": 8726400,
|
||||||
@@ -178,8 +182,6 @@ namespace qbridge.Controllers
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//https://localhost:5001/oauthredirect?state=bar&code=foo
|
|
||||||
// return Content($"State: {state}, Code: {code}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string Base64Encode(string plainText)
|
public static string Base64Encode(string plainText)
|
||||||
@@ -188,19 +190,21 @@ namespace qbridge.Controllers
|
|||||||
return System.Convert.ToBase64String(plainTextBytes);
|
return System.Convert.ToBase64String(plainTextBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//This block gets the QuickBooks official endpoints rather than statically coding them
|
||||||
public async Task GetQBDiscoveryDocument()
|
public async Task GetQBDiscoveryDocument()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
Example:
|
||||||
issuer:"https://oauth.platform.intuit.com/op/v1",
|
issuer:"https://oauth.platform.intuit.com/op/v1",
|
||||||
authorization_endpoint:"https://appcenter.intuit.com/connect/oauth2",
|
authorization_endpoint:"https://appcenter.intuit.com/connect/oauth2",
|
||||||
token_endpoint:"https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer",
|
token_endpoint:"https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer",
|
||||||
userinfo_endpoint:"https://accounts.intuit.com/v1/openid_connect/userinfo",
|
userinfo_endpoint:"https://accounts.intuit.com/v1/openid_connect/userinfo",
|
||||||
revocation_endpoint:"https://developer.API.intuit.com/v2/oauth2/tokens/revoke",
|
revocation_endpoint:"https://developer.API.intuit.com/v2/oauth2/tokens/revoke",
|
||||||
jwks_uri:"https://oauth.platform.intuit.com/op/v1/jwks",
|
jwks_uri:"https://oauth.platform.intuit.com/op/v1/jwks"
|
||||||
*/
|
*/
|
||||||
var request = new HttpRequestMessage(HttpMethod.Get,
|
|
||||||
"https://developer.api.intuit.com/.well-known/openid_sandbox_configuration");
|
var request = new HttpRequestMessage(HttpMethod.Get, DISCOVERY_DOCUMENT_URL);
|
||||||
request.Headers.Add("Accept", "application/json");
|
request.Headers.Add("Accept", "application/json");
|
||||||
request.Headers.Add("User-Agent", "AyaNova-QBridge");
|
request.Headers.Add("User-Agent", "AyaNova-QBridge");
|
||||||
|
|
||||||
@@ -217,46 +221,24 @@ namespace qbridge.Controllers
|
|||||||
{
|
{
|
||||||
DiscoveryDoc = null;
|
DiscoveryDoc = null;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
// string baseUrl = "https://developer.api.intuit.com/.well-known/openid_sandbox_configuration"; //The 'using' will help to prevent memory leaks. //Create a new instance of HttpClient
|
|
||||||
// using (System.Net.Http.HttpClient client = new HttpClient())
|
|
||||||
|
|
||||||
// //Setting up the response...
|
|
||||||
|
|
||||||
// using (HttpResponseMessage res = await client.GetAsync(baseUrl))
|
|
||||||
// using (HttpContent content = res.Content)
|
|
||||||
// {
|
|
||||||
// string data = await content.ReadAsStringAsync();
|
|
||||||
// if (data != null)
|
|
||||||
// {
|
|
||||||
// Console.WriteLine(data);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[HttpGet("Revoke/{tokenToRevoke}")]
|
[HttpGet("Revoke/{tokenToRevoke}")]
|
||||||
public async Task<IActionResult> RevokeAsync([FromRoute]string tokenToRevoke)
|
public async Task<IActionResult> RevokeAsync([FromRoute]string tokenToRevoke)
|
||||||
{
|
{
|
||||||
//Revoke the access token for the app for the unique ID specified
|
//Revoke the access token for the app for the unique ID specified
|
||||||
/*
|
/*
|
||||||
|
POST https://developer.api.intuit.com/v2/oauth2/tokens/revoke HTTP/1.1
|
||||||
POST https://developer.api.intuit.com/v2/oauth2/tokens/revoke HTTP/1.1
|
Accept: application/json
|
||||||
Accept: application/json
|
Authorization: Basic UTM0dVBvRDIwanp2OUdxNXE1dmlMemppcTlwM1d2
|
||||||
Authorization: Basic UTM0dVBvRDIwanp2OUdxNXE1dmlMemppcTlwM1d2
|
NzRUdDNReGkwZVNTTDhFRWwxb0g6VEh0WEJlR3dheEtZSlVNaFhzeGxma1l
|
||||||
NzRUdDNReGkwZVNTTDhFRWwxb0g6VEh0WEJlR3dheEtZSlVNaFhzeGxma1l
|
XaFg3ZlFlRzFtN2szTFRwbw==
|
||||||
XaFg3ZlFlRzFtN2szTFRwbw==
|
Content-Type: application/json
|
||||||
Content-Type: application/json
|
{
|
||||||
|
"token": "{bearerToken or refreshToken}"
|
||||||
{
|
}
|
||||||
"token": "{bearerToken or refreshToken}"
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//GET THE DISCOVERY DOCUMENT
|
//GET THE DISCOVERY DOCUMENT
|
||||||
|
|||||||
Reference in New Issue
Block a user