I am attempting integrate a program with Authorization Code Flow using cURL; I use Coldfusion, so I have adapted my code based the documentation, but you should be able to understand the URL variables that I am passing:
<cfhttp
method="get"
url="https://platform.devtest.ringcentral.com/restapi/oauth/authorize";
resolveurl="yes"
getasbinary="never"
>
<cfhttpparam type="header" name="content-type" value="application/x-www-form-urlencoded">
<cfhttpparam type="url" name="response_type" value="code">
<cfhttpparam type="url" name="client_id" value="#client_id#">
<cfhttpparam type="url" name="redirect_uri" value="#redirect_uri#">
<cfhttpparam type="url" name="state" value="#state#">
<cfhttpparam type="url" name="prompt" value="login">
</cfhttp>
When I execute the code, it processes and displays code that can only execute if the redirect_uri is executed, therefore, the Ringcentral server is forwarding to the redirect_uri.
Here's what my server finds the following variables on dumping variables off of the redirect_uri page:
error: invalid_request
error_description: Parameter [prompt] value is invalid
state : ydcm2ud3d2edvLde911nvev9zwvhLiLztzkhh4qmyc6beg44se
1) The only variable that is passed to my redirect_uri page is "state"
2) The error does not make sense. The prompt variable value is correct. The documentation says use "login".
I am trying to a response so I can get access token and refresh tokens so I can interact with the API calls.
Please advise....
1) Yes, your URL is correct
2) Here is the call I made and traced for your reference. So you can see that our server returns full URL in the path.
GET https://platform.devtest.ringcentral.com/restapi/oauth/authorize? client_id=...&redirect_uri=...&response_type=code&state=... HTTP/1.1 Accept-Encoding: gzip,deflate Host: platform.devtest.ringcentral.com Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5)I pointed you earlier to this post: http://www.codersrevolution.com/blog/CFHTTP-doesnt-resolve-URLs-properly-on-redirect. So maybe you need to check with ColdFusion support.
HTTP/1.1 302 Found Server: nginx/1.10.2 Date: Mon, 12 Mar 2018 20:02:45 GMT Content-Length: 0 Connection: keep-alive X-Application-Context: application:8080 Location: https://service.devtest.ringcentral.com/mobile/loginDispatcher? responseType=code&clientId=...&brandId=1210&state=...&localeId=en_US& endpointId=&session=-2915783893910517926&display=page& prompt=login%20consent%20sso&scope=& appUrlScheme=...&ui_options=&hideNavigationBar=true
I have used this code with Google's API and it works, so I know my authorization flow works with them...
<cfset redirect_uri = " MYREDIRECTURI.com" />
<cfhttpparam type="url" name="redirect_uri" value="#redirect_uri#">
I don't think that's the issue....
So for step #1, what is the uri in your case?
I know with Google Authorization Flow, it brings up Google's page, I login, it passes it to my redirect URI which grabs the access tokens and refresh tokens from the JSON string that is passed and I am on my way. It should work the same....
Are you saying you can't initiate the authorization flow from the backend (I know others have with PHP which means CF should be able to do it) or are you saying in my case I must use JS? I would like to avoid JS.
When you say my backend must pass the full redirect URI to the browser client, I am not following you....I can pretty much do anything with CF, but if you are saying that the authorization flow must be on the client side, then it can't be done.
Ok. I tried both and I get the same error. So, I removed it as you suggested and changes happened.
Now, it's redirecting me as follows:
https://www.MYSERVER.com/login/unifiedLogin.html?session=-XXXXXXXXXXXXXX&6597080091492620690&responseType=code&clientId=MYCLIENTID&brandId=BRANDID&state=rct7dor1i5479Le8n2ca4e5xLt3dv0d6kn4hug23nnn3tckua0&localeId=en_US&endpointId=&display=page&prompt=login%20consent%20sso&scope=&appUrlScheme=https%3A%2F%2Fwww.MYDOMAIN.com%2Fsubprocesses%2Fringcentral%2FringCentral_callback.cfm&ui_options=&hideNavigationBar=true
Obviously, it's throwing a 404 error because it's trying to get this path is not on my server.
It appears to be attempting to allow me to login, but for whatever reason it's trying to run the path off of my server.
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