This commit is contained in:
2019-09-26 18:27:15 +00:00
parent 9f5b0ebef4
commit a30e3ecec7

View File

@@ -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