News & Announcements User Community Developer Community

Welcome to the RingCentral Community

Please note the community is currently under maintenance and is read-only.

Search
Make sure to review our Terms of Use and Community Guidelines.
  Please note the community is currently under maintenance and is read-only.
Home » Developers
400 BadRequest - C# Client - RestClient call to Authorize
Tags: sdk
Dec 21, 2020 at 10:59am   •   6 replies  •  0 likes
Shelby Tolliver

Following code :

var rc = new RestClient(appConfig.RingCentralClientId, appConfig.RingCentralClientSecret, appConfig.RingCentralApiServerUrl);
TokenInfo tokenInfo = await rc.Authorize(code, productDomain + ringCentralOauthTokenCallbackUrl); // "code" comes from RingCentral response to initial call to "AuthorizeUri".


Results in the following error:

Call failed with status code 400 (Bad Request): POST https://platform.devtest.ringcentral.com/restapi/oauth/token

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.


Exception Details: Flurl.Http.FlurlHttpException: Call failed with status code 400 (Bad Request): POST https://platform.devtest.ringcentral.com/restapi/oauth/token


Stack Trace:

[FlurlHttpException: Call failed with status code 400 (Bad Request): POST https://platform.devtest.ringcentral.com/restapi/oauth/token]   Flurl.Http.<HandleExceptionAsync>d__23.MoveNext() +565   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +40   Flurl.Http.<SendAsync>d__19.MoveNext() +2946   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48   Flurl.Http.<SendAsync>d__19.MoveNext() +3738   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50   System.Runtime.CompilerServices.ConfiguredTaskAwaiter.GetResult() +40   Flurl.Http.<ReceiveJson>d__0`1.MoveNext() +392   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +40   RingCentral.<Authorize>d__44.MoveNext() +487   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +40   AsclepiusWeb.Core.Service.CallRecords.CallerIqPlugins.<getAccessTokens>d__7.MoveNext() in C:\dev\asclepius\source\AsclepiusWeb\Core\Service\CallRecords\CallerIqPlugins\CallerIqPluginService.cs:52   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +40   AsclepiusWeb.Areas.clients.Controllers.<ringCentral>d__2.MoveNext() in C:\dev\asclepius\source\AsclepiusWeb\Areas\clients\Controllers\CallerIqOAuthController.cs:27   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50   System.Runtime.CompilerServices.TaskAwaiter.GetResult() +30   System.Threading.Tasks.TaskHelpersExtensions.ThrowIfFaulted(Task task) +63   System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +114   System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>b__36(IAsyncResult asyncResult) +66   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +137   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49   System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +117   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323   System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +44   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +137   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50   System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +72   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +185   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +134   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +134   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44   System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +39   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +134   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +134   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38   System.Web.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar) +279   System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +153



6 Answers
answered on Dec 22, 2020 at 8:00am  

Ok. Is there anything else I can provide here to help resolve this issue? I'm not getting any worthwhile detailed info on this error. Here's what the error says...

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: Flurl.Http.FlurlHttpException: Call failed with status code 400 (Bad Request): POST https://platform.devtest.ringcentral.com/restapi/oauth/token


Again, I'm using the C# RestClient to call "Authorize" and I'm passing in the code returned to me by RingCentral along with a redirect-url.


Here's a more palatable stack trace. Sorry for the mess in the original post...

[FlurlHttpException: Call failed with status code 400 (Bad Request): POST https://platform.devtest.ringcentral.com/restapi/oauth/token]
   Flurl.Http.<HandleExceptionAsync>d__23.MoveNext() +565
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50
   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +40
   Flurl.Http.<SendAsync>d__19.MoveNext() +2945
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48
   Flurl.Http.<SendAsync>d__19.MoveNext() +3737
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50
   System.Runtime.CompilerServices.ConfiguredTaskAwaiter.GetResult() +40
   Flurl.Http.<ReceiveJson>d__0`1.MoveNext() +392
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50
   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +40
   RingCentral.<Authorize>d__44.MoveNext() +487
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50
   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +40
   AsclepiusWeb.Core.Service.CallRecords.CallerIqPlugins.<getAccessTokens>d__9.MoveNext() in C:\dev\asclepius\source\AsclepiusWeb\Core\Service\CallRecords\CallerIqPlugins\RingCentralApiClient.cs:47
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50
   System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +40
   AsclepiusWeb.Areas.clients.Controllers.<ringCentral>d__2.MoveNext() in C:\dev\asclepius\source\AsclepiusWeb\Areas\clients\Controllers\CallerIqOAuthController.cs:27
   System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +48
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +230
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +143
   System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +50
   System.Runtime.CompilerServices.TaskAwaiter.GetResult() +30
   System.Threading.Tasks.TaskHelpersExtensions.ThrowIfFaulted(Task task) +63
   System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +114
   System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>b__36(IAsyncResult asyncResult) +66
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +137
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49
   System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +117
   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
   System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
   System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +44
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +137
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50
   System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +72
   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +185
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +134
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +134
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44
   System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +39
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +134
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +134
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
   System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +37
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
   System.Web.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar) +279
   System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +153 



 0
answered on Dec 22, 2020 at 12:02pm  

Ok. Just to follow up. Turns out the reason for the "Bad Request" is because the url I specified in the call to "Authorize" was not the same as the one specified in the call to "AuthorizeUrl". Am a little surprised because both url's are registered in my sandbox application. In any event, I'm now beyond that hurdle. Thanks for all the various hints.


 0
answered on Dec 22, 2020 at 10:39am  

Whether I call Authorize with or without the TokenInfo assignment (as in the quick-start guide that you point to) I still get the same, useless, error. Very frustrating. I'm not using dotnet core either (as the guide does)


 0
answered on Dec 22, 2020 at 8:34am  

Follow this quick start sample https://developers.ringcentral.com/guide/authentication/quick-start.

You don't call the .authorize() that way. Where did you get that idea or instruction?

TokenInfo tokenInfo = await rc.Authorize(code, productDomain + ringCentralOauthTokenCallbackUrl);



 0
answered on Dec 21, 2020 at 12:22pm  

All 3 of those references are passing in username/password where I'm passing in the return code sent to me (via redirect uri) once the user accepts the use of the apps requested permissions. Don't know if that makes any difference. The one note that I thought may help was about disabling auto-refresh. I added the following command "rc.AutoRefreshToken = false" prior to making the call to authorize. Still seeing the same error.


 0



A new Community is coming to RingCentral!

Posts are currently read-only as we transition into our new platform.

We thank you for your patience
during this downtime.

Try Workflow Builder

Did you know you can easily automate tasks like responding to SMS, team messages, and more? Plus it's included with RingCentral Video and RingEX plans!

Try RingCentral Workflow Builder

PRODUCTS
RingEX
Message
Video
Phone
OPEN ECOSYSTEM
Developer Platform
APIs
Integrated Apps
App Gallery
Developer support
Games and rewards

RESOURCES
Resource center
Blog
Product Releases
Accessibility
QUICK LINKS
App Download
RingCentral App login
Admin Portal Login
Contact Sales
© 1999-2024 RingCentral, Inc. All rights reserved. Legal Privacy Notice Site Map Contact Us