question

jason4335 avatar image
jason4335 asked ·

"errorCode" : "OAU-153", "message" : "Invalid client: ", "parameters" :

I am trying Password Flow...I'm adapting the code to Coldfusion but I am getting the Invalid Cilent error.

1) My app is setup for Password Flow.
2) I am using username in format of: +15559991212
3) Password was reset and changed successfully to confirm that's correct.
4) Client Id is copied right out of the Credentials in my Developer Account and encoded in Base64.
5) Secret key is copied right out of Credentials in my Developer Account.

My Code:

<cfset authorization = client_id_base64 & ":" & client_secret /> 
                
<cfhttp
    method="post"
    url=" https://platform.devtest.ringcentral.com/restapi/oauth/token";
    resolveurl="yes"
    getasbinary="never"
    >

<cfhttpparam type="header" name="content-type" value="application/x-www-form-urlencoded">
<cfhttpparam type="header" name="accept" value="application/json">
<cfhttpparam type="header" name="authorization" value="#authorization#">

<cfhttpparam type="url" name="username" value="#username#">
<cfhttpparam type="url" name="password" value="#password#">
<cfhttpparam type="url" name="extension" value="#extension#">
<cfhttpparam type="url" name="grant_type" value="password">


</cfhttp>

<cfoutput>#cfhttp.FileContent#</cfoutput>

<cfabort>


General Topic
1 |1000 characters needed characters left characters exceeded

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

anton-nikitin avatar image
anton-nikitin answered ·
Authorization header should be like BASE64(client_id ":" client_secret). It doesn't seem from your code that you are building it properly (if I am not mistaken you encode only client_id with Base64 and then append secret to it as is.
1 |1000 characters needed characters left characters exceeded

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

jason4335 avatar image
jason4335 answered ·
So you are saying that the bas64 needs to be applied to both together...another rep for Ringcentral said that you base64 the client_id and then put a colon and then leave the client secret the same which didn't make sense to me frankly.
1 |1000 characters needed characters left characters exceeded

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

jason4335 avatar image
jason4335 answered ·
Also, another rep said a conflicting thing that you don't need to base64 on Password Flow....so there is a lot of confusion between support on how this API is constructed.
1 |1000 characters needed characters left characters exceeded

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

anton-nikitin avatar image
anton-nikitin answered ·
Jason, I don't know who told you that and apologize for misunderstanding. But actually this part is explained in multiple places in our documentation (for example here:  http://ringcentral-api-docs.readthedocs.io/en/latest/oauth/#client-authentication) as well as in other sources explaining OAuth 2.0 protocol. It is just a standard authorization header format for HTTP Basic authentication.
1 |1000 characters needed characters left characters exceeded

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

jason4335 avatar image
jason4335 answered ·
Ok...I appreciate the direct link to what is right...

To confirm that I did my Authorization Header correctly, here is my code and I will explain it:

<cfset authorization = client_id & ":" & client_secret />
<cfset authorization = "Basic " & ToBase64(authorization) />

The first line in Coldfusion is saying this:

authorization = the base64 of client_id:client_secret

The second line says add the word "Basic" plus a space to the front of the authorization variable above, so if you outputted this variable, it would look like this:

Basic THISISTHEBASE64OFCLIENT_ID:CLIENT_SECRET

Assuming I did that right (which I assume I did since the error changed), I got this:

"errorCode" : "OAU-140", "message" : "Invalid resource owner credentials"

This implies invalid username or password.  My username is the Development phone number in my console and my password (which I believe I'm right) but I cannot verify it since it's not readable.

Jason


7 comments
1 |1000 characters needed characters left characters exceeded

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

Jason, Authorization header is correct now. I assume that since you are connecting to Sandbox environment you will need your sandbox username (phone number) and password. You can reset password if you want in application dashboard on developer portal.
0 Likes 0 ·
Ok.

Username is in this format: +15556661212 (the real number was obtained from my Sandbox credentials section in my developer section.

Password: I reset the password to another password and updated my code to make sure.

Same error.

0 Likes 0 ·
FYI...also I double checked what my keys are after Base64 by manually checking it on websites suggested on this forum and it matched what Coldfusion is doing, so I know my header is right.
0 Likes 0 ·
Can you provide the value of RCRequestId header which was returned in your error response? I will check backend logs.
0 Likes 0 ·
This is what is returned in entirety..not sure if that's what you want:

{ "error" : "invalid_grant", "error_description" : "Invalid resource owner credentials", "errors" : [ { "errorCode" : "OAU-140", "message" : "Invalid resource owner credentials" } ] }


0 Likes 0 ·
Show more comments
jason4335 avatar image
jason4335 answered ·
I figured it out...tried to post the Coldfusion code for Password Flow, but it wouldn't post.
10 comments
1 |1000 characters needed characters left characters exceeded

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

please put
reasn for error
0 Likes 0 ·
Jason - please share what you figured out. I have the same code and same error and am going crazy here.
0 Likes 0 ·
You are using Coldfusion, correct?
0 Likes 0 ·
Yes, sir! 2016 w/MySQL.

I have near identical code and am getting this response:
{ "error" : "invalid_grant", "error_description" : "Invalid resource owner credentials", "errors" : [ { "errorCode" : "OAU-140", "message" : "Invalid resource owner credentials" } ] }


<cfset authorization = client_id & ":" & secret_key />
<cfset authorization = "Basic " & ToBase64(authorization) />

<cfhttp url=" https://platform.devtest.ringcentral.com/restapi/oauth/token"; method="POST" username="#client_id#" password="#secret_key#" result="result" timeout="60">
<cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded">
<cfhttpparam type="header" name="Accept" value="application/json">
<cfhttpparam type="header" name="Authorization" value="#authorization#">
<cfhttpparam type="body" value="grant_type=password&username=#email#&extension=#extension#password=#password#">
</cfhttp>

0 Likes 0 ·
This is mine:
0 Likes 0 ·
Show more comments

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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