Skip to main content
The First Step
September 20, 2016
Question

Invalid client error while calling refresh token api

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

    8 replies

    Employee
    September 20, 2016
    It probably means your appKey or appSecret is wrong.

    In your code there is "MyaccessToken", how did you generate it?
    The First Step
    September 20, 2016
    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



    Found Your Voice
    September 20, 2016
    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.
    The First Step
    October 3, 2016
    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.


    Found Your Voice
    October 3, 2016
    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
    New Participant
    February 25, 2018
    Mahesh More,have you get the solution.Have you get the solution to refresh the access token?
    If yes please share code.Thanks
    The First Step
    June 21, 2019

    Yes, you don't need to use access_token in Authorization header after Basic tag.. it is meant for base64 format of clientId: clientSecret

    Remaining parameters are just fine.. the format should be

    username=<account phone number>&password=<account password>&extension=<your extension>&grant_type=refresh_token&refresh_token=<Your refresh token>

    The First Step
    June 22, 2019

    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