question

sara11893 avatar image
sara11893 asked sara11893 commented

API call to Authorize from Postman

Hi all, I am trying to test the API call to Authorize RingCentral from Postman and I am receiving 'Could not complete oauth login' error. Attached the screen shot of my request.




Access Token URL: https://platform.devtest.ringcentral.com/restapi/oauth/token


Thanks!

rest apiauthentication
1 |3000

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

sara11893 avatar image
sara11893 answered sara11893 commented
Another scenario

I am trying the following method of call using Apex 

  1. Made an Authorize call to RC https://platform.devtest.ringcentral.com/restapi/oauth/authorize, Authorize call was successful and returned the 'code: XXXXXXXX' with response 
  2. Used the Code: XXXXXXX with params to make a token call https://platform.devtest.ringcentral.com/restapi/oauth/token but getting 400 error. 
Complete URL:

' https://platform.devtest.ringcentral.com/restapi/oauth/authorize?response_type=code&client_id=<CLIENT ID>&client_secret=<SECRET> &redirect_uri=<REDIRECT URI>&state=step2'

' https://platform.devtest.ringcentral.com/restapi/oauth/token?code=<AUTHIRIZE CODE FROM THE RESPONSE>&grant_type=password&client_id=<CLIENT ID>&client_secret=<SECRET> &redirect_uri=<REDIRECT URI>'


Any thoughts?
2 comments
1 |3000

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

Tyler Liu avatar image Tyler Liu ♦ commented ·
Check the response body of the 400 error.

grant_type should be "authorization_code" instead of "password". 

Ref:  https://github.com/ringcentral/ringcentral-ruby/blob/master/lib/ringcentral.rb#L50-L54
0 Likes 0 ·
sara11893 avatar image sara11893 commented ·
I am receiving 'Account does not exist' error.
0 Likes 0 ·
Tyler Liu avatar image
Tyler Liu answered Tyler Liu commented
If you want to jump to Apex sooner or later. Why not simply try some programming language instead of Postman?

As far as I can tell, Apex is similar to Java.  Here is how we do the authorization in Java:  https://github.com/ringcentral/ringcentral-java/blob/master/src/main/java/com/ringcentral/RestClient...
3 comments
1 |3000

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

sara11893 avatar image sara11893 commented ·
Postman is successful. The 400 error I am receiving is through APEX call. Below is the response from Authorize Request.

22:28:07:007 USER_DEBUG [26]|DEBUG|Authorize Response: {code=XXXXXXXXX, state=step2}

I am trying to pass the code with the following token Request and receiving 'Accont does not exist' as response body.

' https://platform.devtest.ringcentral.com/restapi/oauth/token?code=<CODE>&grant_type=password&client_id=<CLIENT ID>&client_secret=<SECRET> &redirect_uri=<REDIRECT URI>'

0 Likes 0 ·
Tyler Liu avatar image Tyler Liu ♦ commented ·
client_id and client_secret should be used in HTTP Header for basic authorization.  They are not supposed to be in query string.

And you are doing authorization code flow. So query parameter  "grant_type=password" should be changed to "grant_type= authorization_code"
0 Likes 0 ·
Tyler Liu avatar image Tyler Liu ♦ commented ·
Postman is successful while Apex code is not. Because what the Apex code does it not what Postman does.
0 Likes 0 ·
Tyler Liu avatar image
Tyler Liu answered
I highly recommend you to read  https://github.com/ringcentral/ringcentral-ruby/blob/master/lib/ringcentral.rb  

170 line of code and covers all the things you need to know. Way more direct than trying everything with Postman.

For example: for authorization part:  https://github.com/ringcentral/ringcentral-ruby/blob/master/lib/ringcentral.rb#L154-L165 
Before you get the token, use back authorization, otherwise use bearer authorization.

And in order to exchange code for token:  https://github.com/ringcentral/ringcentral-ruby/blob/master/lib/ringcentral.rb#L49-L54
You can see that  grant_type: 'authorization_code' and  client_id & client_secret are not included in post body.(they are used in Basic authorization header instead)
1 |3000

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

Tyler Liu avatar image
Tyler Liu answered sara11893 commented
And you don't have to use Apex because we don't have official SDK for Apex.

You can use Javascript instead because there are ways for Apex to communicate with JavaScript.  Check this video from me:  https://www.youtube.com/watch?v=bf_Z391G2cw&t=1182s

RingCentral has official SDK for JS  https://github.com/ringcentral/ringcentral-js

Here is a community version maintained by me:  https://github.com/tylerlong/ringcentral-js-concise
1 comment
1 |3000

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

sara11893 avatar image sara11893 commented ·
Will check it out. Thanks for the info.
0 Likes 0 ·

Developer sandbox tools

Using the RingCentral Phone for Desktop, you can dial or receive test calls, send and receive test SMS or Fax messages in your sandbox environment.

Download RingCentral Phone for Desktop:

Tip: switch to the "sandbox mode" before logging in the app:

  • On MacOS: press "fn + command + f2" keys
  • On Windows: press "Ctrl + F2" keys