We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.

Forum Discussion

gagsbh's avatar
gagsbh
Helpful | Level 5
8 months ago

Invalid_Grant whlie generating Access Token using saved Refresh token in Dropbox Sign .NET SDK

Hello Greg-DB ,

 

I am using the following Dropbox Sign .NET SDK code in my project to generate Dropbox Sign Access token using previously saved Refresh token.

 

 public async Task<TokenResponse> GetRefreshToken(TokenResponse tokenResponse)
        {
            TokenResponse tokenResponse2 = new TokenResponse();
            string errorlog = ConfigurationManager2.AppSettings("ErrorLog");
 
            var config = new Configuration();
            var oAuthApi = new OAuthApi(config);
           
            try
            {
                var data = new OAuthTokenRefreshRequest(refreshToken: tokenResponse.RefreshToken);
 
                var result = await oAuthApi.OauthTokenRefreshAsync(data);
                if (result != null)
                {
                    tokenResponse2.Expires = result.ExpiresIn;
                    tokenResponse2.AcquireTime = DateTime.Now;
                    tokenResponse2.AccessToken = result.AccessToken;
                    tokenResponse2.RefreshToken = result.RefreshToken; 
                    tokenResponse2.AcquireTime = DateTime.UtcNow;                  
                }               
 
                return tokenResponse2;
            }            
            catch (ApiException ex)
            {                
                    File.AppendAllText(errorlog, "\r\n\r\n" + "nGetRefreshToken: - Error");
                    File.AppendAllText(errorlog, "\r\nException when calling Dropbox Sign API: " + ex.Message);
                    File.AppendAllText(errorlog, "\r\nStatus Code: " + ex.ErrorCode);
                    File.AppendAllText(errorlog, "\r\nStack Trace: " +  ex.StackTrace);
             
    throw ex;
            }
            catch (Exception ex)
            {
                File.AppendAllText(errorlog, "\r\nGetRefreshToken - Error");
                File.AppendAllText(errorlog, "\r\n" + ex.Message + "\r\n" + ex.StackTrace);
            }
 
            return tokenResponse;
        }

 

I am getting the following Error Message and Stack Trace.
 
Error converting value "invalid_grant" to type 'Dropbox.Sign.Model.ErrorResponseError'. Path 'error', line 1, position 24.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Dropbox.Sign.Client.Configuration.<>c.<.cctor>b__78_0(String methodName, IApiResponse response)
at Dropbox.Sign.Api.OAuthApi.OauthTokenRefreshWithHttpInfoAsync(OAuthTokenRefreshRequest oAuthTokenRefreshRequest, Int32 operationIndex, CancellationToken cancellationToken)
at Dropbox.Sign.Api.OAuthApi.OauthTokenRefreshAsync(OAuthTokenRefreshRequest oAuthTokenRefreshRequest, Int32 operationIndex, CancellationToken cancellationToken)
at SGCloudMigration.Business.DropboxSignUtility.GetRefreshToken(TokenResponse tokenResponse, String relationshipname) in D:\SG Cloud Migration\SGCloudMigration.Business.Core\DropboxSignUtility.cs:line 364
 
Please  help.
 
Thanks,
Gagan
  • [Cross-linking for reference: https://stackoverflow.com/questions/78296262/why-am-i-getting-invalid-grant-error-while-using-refresh-token-to-generate-acces ]

     

    Hi Gagan,

    Thank you for reaching out, it looks like you are receiving an invalid_grant error. This error typically occurs when using a stored refresh token and one of the following is true: 

     - Scopes for the OAuth API app have changed

     - The user revoked authorization to the OAuth API app
     - The OAuth API app is approved multiple times by the same user—this will cause the previous authorization to reset and a new refresh token to be generated.

    If any of these actions have occurred, please try completing the authorization process again for the user to generate a new access_token and refresh_token. Try using the new refresh_token to generate any new access_token after the initial access_token expires. Please see our OAuth Walkthrough documentation for more details.

    If the issue persists, please submit a support request, along with the code snippet you just provided, so we can further assist you in determining why that error is being thrown. Thanks!

  • [Cross-linking for reference: https://stackoverflow.com/questions/78296262/why-am-i-getting-invalid-grant-error-while-using-refresh-token-to-generate-acces ]

     

    Hi Gagan,

    Thank you for reaching out, it looks like you are receiving an invalid_grant error. This error typically occurs when using a stored refresh token and one of the following is true: 

     - Scopes for the OAuth API app have changed

     - The user revoked authorization to the OAuth API app
     - The OAuth API app is approved multiple times by the same user—this will cause the previous authorization to reset and a new refresh token to be generated.

    If any of these actions have occurred, please try completing the authorization process again for the user to generate a new access_token and refresh_token. Try using the new refresh_token to generate any new access_token after the initial access_token expires. Please see our OAuth Walkthrough documentation for more details.

    If the issue persists, please submit a support request, along with the code snippet you just provided, so we can further assist you in determining why that error is being thrown. Thanks!

    • gagsbh's avatar
      gagsbh
      Helpful | Level 5

      Thank you for the reply.

      For me, the issue was due to:

      - The OAuth API app is approved multiple times by the same user—this will cause the previous authorization to reset and a new refresh token to be generated.