03-09-2022 11:43 AM
Hi,
This is a very novice question, but I am having trouble with a post request snap. This is just to authenticate with the RingCentral platform to receive a token for API consumption. I am able to successfully retrieve an access token when calling the oauth/token endpoint in Postman. The issue arises when I try to move this post call into SnapLogic. The call requires certain parameters to be passed through the body and I am not sure how to duplicate this in SnapLogic post snap. Please see the screenshot of the Postman call Body tab below.
I have created a basic account in SnapLogic to store the username and password and my post snap references that account. I am also aware that the credentials of a basic account can be accessed using the “Account.Username” and Account.Password" of the respective referenced account within the snap.
I am just not sure how to build out the body section in the “x-www-form-urlencoded” format as shown in the screenshot? The error I get back when validating this post snap is just a 400: Bad Request.
Any insight/help that anyone could provide would be greatly appreciated. Please let me know if additional information is needed to provide assistance.
Thanks,
James
03-09-2022 12:42 PM
Hi @jsmith141 ,
When the content type is x-www-form-urlencoded then the format of the body should be the same as the query string:
parameter1=value1¶meter2=value2
In SnapLogic you can send the request body in the HTTP entity field of the REST Post snap.
Example expression:
“param1=”+encodeURIComponent($param1)+“¶m2=”+encodeURIComponent($param2)
Best Regards,
Dragan Talevski
03-09-2022 01:16 PM
Hi Dragan,
Thank you for your reply. I have implemented the encodeURIComponent call as you describe but I am getting the same 400 error. Please see the exact line below…
“grant_type=”+encodeURIComponent(“password”)+“&username=”+encodeURIComponent(account.username)+“&password=”+encodeURIComponent(account.password)
I have the Upload body type fields set to “Multipart form-data”. Does this need to be changed, or is there another setting on this snap that may need to be adjusted?
Thanks,
James
03-09-2022 01:23 PM
encodeURIComponent(“password”)
is just password
(there’s nothing that needs to be encoded), so you could simplify that to just "grant_type=password&username=" + ...
But I still don’t understand how you’re able to get account.username and account.password to resolve.
Upload body type isn’t used here. But you do need to add a row to the “HTTP header” table with Content-Type
application/x-www-form-urlencoded
, as I showed in the screenshot from my last reply.
03-09-2022 01:34 PM
Ah! I just looked at that other Community post you linked. I wasn’t aware of that hack. But I’m pretty sure it only works in an expression used in the Value column of the HTTP Headers table, not anywhere else. I don’t think you’ll be able to use it for the request body.