Question

Invalid client error while calling refresh token api

  • 20 September 2016
  • 7 replies
  • 4070 views

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


7 replies

It probably means your appKey or appSecret is wrong.

In your code there is "MyaccessToken", how did you generate it?
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



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.
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.


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
Mahesh More,have you get the solution.Have you get the solution to refresh the access token?
If yes please share code.Thanks

Yes you don't need to put access_token in Authorization header. All you need to put is Base64 format of clientId and client secret as follow:

Authorization Basic <clientId:clientSecret in Base64>

Access_token are need to pass to the actual main APIs as type Bearer to get the response

Reply