Invalid client error while calling refresh token api

  • 1
  • Problem
  • Updated 9 months ago
  • In Progress
Hi All,

I am calling refresh token api to refresh token. But when I call, It throws error "Invalid client: ".
I am calling using node js.Below is calling function.

       request.post( {            url : ringCentralUrl,
            form: {           
            refresh_token : myRefreshToken,
            grant_type : "refresh_token",
            endpoint_id: endpointId
        },
            headers:{
                "Authorization" : "Basic MyaccessToken",
                'Accept':'application/json',
                'Content-Type':'application/x-www-form-urlencoded' 
            }
        },function(err,responce, responceData) {


      });

Can anyone please help me out.


----
Thanks,
Mahesh More
Photo of Mahesh More

Mahesh More

  • 110 Points 100 badge 2x thumb

Posted 2 years ago

  • 1
Photo of Tyler Long

Tyler Long, Official Rep

  • 8,152 Points 5k badge 2x thumb
It probably means your appKey or appSecret is wrong.

In your code there is "MyaccessToken", how did you generate it?
(Edited)
Photo of Mahesh More

Mahesh More

  • 110 Points 100 badge 2x thumb
Hello Tyler,

MyaccessToken I have generated using RingCentral OAuth 2.0 Authentication.

Do you mean I am using wrong appKey or appSecret while generating access token ?

Thanks,
---
Regards,
Mahesh More
Photo of Mahesh More

Mahesh More

  • 110 Points 100 badge 2x thumb
Also I am able to call RingCentral Api using access token. Only I face this problem while refreshing access token.
Photo of Tyler Long

Tyler Long, Official Rep

  • 7,462 Points 5k badge 2x thumb
Are you using this: https://github.com/ringcentral/ringcentral-js ?  If so, there is already `refresh` method and you don't have to implement your own: https://github.com/ringcentral/ringcentral-js/blob/master/src/platform/Platform.js#L375

If you still prefer to implement it yourself, Pay attention to "MyaccessToken". It should NOT be OAuth 2.0 accessToken.  Here is code sample for how to generate it: https://github.com/ringcentral/ringcentral-csharp/blob/master/RingCentral/Platform/Platform.cs#L178  It's C# but you can get the idea: it's not OAuth 2.0 accessToken, it's generated by appKey and appSecret directly.
Photo of Tyler Long

Tyler Long, Official Rep

  • 7,462 Points 5k badge 2x thumb
There are two types of tokens: the bearer token and the basic token. You are using the bearer token as the basic token that's why it doesn't work.
Photo of Benjamin Dean

Benjamin Dean, Alum

  • 8,642 Points 5k badge 2x thumb
Could you please provide the following:

1. Are you using the RingCentral JS SDK? If yes, which version?
2. Description of the `endpointId` variable's assigned value
3. The complete error response with headers/body from this request

This will help in figuring out what is happening here.
Photo of Mahesh More

Mahesh More

  • 110 Points 100 badge 2x thumb
I am not using SDK.
I have entered endpointId value which I got it with access token.

Below is the error I am facing.

 {
  "error" : "invalid_client",
  "error_description" : "Authentication header value is malformed"
}



Please do let me know if you need more information.
Photo of Benjamin Dean

Benjamin Dean, Alum

  • 8,642 Points 5k badge 2x thumb
You will need to view the documentation, because Tyler is correct, you are using the incorrect Authorization Header key:value. https://developers.ringcentral.com/api-docs/latest/index.html#!#RefRefreshTokenFlow

What this means is in your example you set the "Authorization: Basic {{myAccessToken}}", but this is incorrect because you SHOULD NOT be using your "access_token" as this value, you should instead be using the result of Base64 encoding your {{appKey}}:{{appSecret}} (which is the same value you used to obtain the 'access_token' initially).

Also, please pay special attention to the description for endpointId...
If not specified, the previously specified or auto-generated value is used by default
Photo of sahiba singh

sahiba singh

  • 90 Points 75 badge 2x thumb
Mahesh More,have you get the solution.Have you get the solution to refresh the access token?
If yes please share code.Thanks
Photo of Tyler Long

Tyler Long, Official Rep

  • 7,462 Points 5k badge 2x thumb
If you use the official SDKs, there are refresh methods to invoke. If you tell me you programming language, I can send you some sample code.