diff --git a/Xero.NetStandard.OAuth2Client/src/Client/IXeroClient.cs b/Xero.NetStandard.OAuth2Client/src/Client/IXeroClient.cs index ba1daa01..f132fec7 100644 --- a/Xero.NetStandard.OAuth2Client/src/Client/IXeroClient.cs +++ b/Xero.NetStandard.OAuth2Client/src/Client/IXeroClient.cs @@ -12,6 +12,7 @@ public interface IXeroClient string BuildLoginUri(); string BuildLoginUri(string state); string BuildLoginUri(string state, string scope); + string BuildLoginUri(string state, string scope, string acrValues); string BuildLoginUriPkce(string codeVerifier); string BuildLoginUriPkce(string codeVerifier, string state); string BuildLoginUriPkce(string codeVerifier, string state, string scope); diff --git a/Xero.NetStandard.OAuth2Client/src/Client/XeroClient.cs b/Xero.NetStandard.OAuth2Client/src/Client/XeroClient.cs index 36824eba..a1a98795 100644 --- a/Xero.NetStandard.OAuth2Client/src/Client/XeroClient.cs +++ b/Xero.NetStandard.OAuth2Client/src/Client/XeroClient.cs @@ -62,18 +62,26 @@ public string BuildLoginUri(string state) /// A valid initial redirect URI for Xero OAuth 2.0 authorisation flow. public string BuildLoginUri(string state, string scope) { + return BuildLoginUri(state, scope, xeroConfiguration.AcrValues); + } + + /// + /// Builds a XeroLogin URL for code flow, allows state, scope and acrValues to be passed in. + /// + /// A valid initial redirect URI for Xero OAuth 2.0 authorisation flow. + public string BuildLoginUri(string state, string scope, string acrValues) + { var url = _xeroAuthorizeUri.CreateAuthorizeUrl( clientId: xeroConfiguration.ClientId, responseType: "code", redirectUri: xeroConfiguration.CallbackUri.AbsoluteUri, state: state, - scope: scope + scope: scope, + acrValues: acrValues ); return url; } - - /// /// Builds a XeroLogin URL for PKCE flow with codeVerifier input /// diff --git a/Xero.NetStandard.OAuth2Client/src/Config/XeroConfiguration.cs b/Xero.NetStandard.OAuth2Client/src/Config/XeroConfiguration.cs index e4775fd2..e052218e 100644 --- a/Xero.NetStandard.OAuth2Client/src/Config/XeroConfiguration.cs +++ b/Xero.NetStandard.OAuth2Client/src/Config/XeroConfiguration.cs @@ -11,6 +11,7 @@ public class XeroConfiguration public string Scope { get; set; } public string State { get; set; } public string XeroApiBaseUri { get; set; } = "https://api.xero.com"; + public string AcrValues { get; set; } public string XeroLoginBaseUri { get; set; } = "https://login.xero.com"; public string XeroIdentityBaseUri { get; set; } = "https://identity.xero.com"; }