diff --git a/Owin.Security.Providers/Salesforce/Provider/SalesforceAuthenticatedContext.cs b/Owin.Security.Providers/Salesforce/Provider/SalesforceAuthenticatedContext.cs index b4784c6..9473062 100644 --- a/Owin.Security.Providers/Salesforce/Provider/SalesforceAuthenticatedContext.cs +++ b/Owin.Security.Providers/Salesforce/Provider/SalesforceAuthenticatedContext.cs @@ -20,12 +20,14 @@ namespace Owin.Security.Providers.Salesforce /// The JSON-serialized user /// Salesforce Access token /// Salesforce Refresh token - public SalesforceAuthenticatedContext(IOwinContext context, JObject user, string accessToken, string refreshToken) + /// Salesforce instance url + public SalesforceAuthenticatedContext(IOwinContext context, JObject user, string accessToken, string refreshToken, string instanceUrl) : base(context) { User = user; AccessToken = accessToken; RefreshToken = refreshToken; + InstanceUrl = instanceUrl; Id = TryGetValue(user, "id"); UserId = TryGetValue(user, "user_id"); @@ -59,6 +61,11 @@ namespace Owin.Security.Providers.Salesforce /// public string RefreshToken { get; private set; } + /// + /// Gets the Salesforce instance url + /// + public string InstanceUrl { get; private set; } + /// /// Gets the Salesforce ID / User Info Endpoint /// diff --git a/Owin.Security.Providers/Salesforce/SalesforceAuthenticationHandler.cs b/Owin.Security.Providers/Salesforce/SalesforceAuthenticationHandler.cs index f0f726e..3296568 100644 --- a/Owin.Security.Providers/Salesforce/SalesforceAuthenticationHandler.cs +++ b/Owin.Security.Providers/Salesforce/SalesforceAuthenticationHandler.cs @@ -86,6 +86,7 @@ namespace Owin.Security.Providers.Salesforce dynamic response = JsonConvert.DeserializeObject(text); string accessToken = (string)response.access_token; string refreshToken = (string)response.refresh_token; + string instanceUrl = (string)response.instance_url; // Get the Salesforce user using the user info endpoint, which is part of the token - response.id HttpRequestMessage userRequest = new HttpRequestMessage(HttpMethod.Get, (string)response.id + "?access_token=" + Uri.EscapeDataString(accessToken)); @@ -95,7 +96,7 @@ namespace Owin.Security.Providers.Salesforce text = await userResponse.Content.ReadAsStringAsync(); JObject user = JObject.Parse(text); - var context = new SalesforceAuthenticatedContext(Context, user, accessToken, refreshToken); + var context = new SalesforceAuthenticatedContext(Context, user, accessToken, refreshToken, instanceUrl); context.Identity = new ClaimsIdentity( Options.AuthenticationType, ClaimsIdentity.DefaultNameClaimType,