Crowdin OAuth 401 Client authentication failed

Hello,

I am attempting to setup an OAuth integration, however I am running into an issue. After using the link and logging in I am met with a 401 Client authentication failed error. This is the url I am using: https://accounts.crowdin.com/oauth/authorize?client_id=my_client_id&redirect_uri=https://mywebsite.com/verify&response_type=code&scope=project.status&state=random_state_here. Could someone tell me what’s going wrong?

Hi @DominicDocimo could you please try clearing the cache and cookies?
Also noticed that the trial period for your account expired in August, so we have added some extra days

I cleared both the cache and the cookies, then tried a different browser. Same result. My client ID is GwS8YEAeHpUSDnYFV9DB if that helps.

The issue might be due to a mismatch between the redirect URL specified in the config and the one set in the OAuth application in the browser. Could you please check this one also?

Yup, it ended up being a mismatch between what I had when I originally created the OAuth app and what I had in my code. Thank you!

glad that we found a reason :slight_smile:

Sorry, I have one more question that I can’t seem to figure out. I am able to receive the code, but when I attempt to do a POST request for the access token I’m met with an odd error:
{‘error’: ‘unsupported_grant_type’,
‘error_description’: 'The authorization grant type is not supported by the ’
‘authorization server.’,
‘hint’: ‘Check that all required parameters have been provided’,
‘message’: 'The authorization grant type is not supported by the ’
‘authorization server.’}

My request:
auth = requests.post(url=“https://accounts.crowdin.com/oauth/token”,
headers={“content-type”: “application/json”},
params={
“grant_type”: “authorization_code”,
“client_id”: insert_client_id_here,
“client_secret”: insert_client_secret_here,
“redirect_uri”: insert_url_here,
“code”: insert_code_here
})
I’m a little confused as I believe I have all of the headers and params according to the documentation.

Hi DominicDocimo,

In the code you provided, the params parameter is used to send data as part of the request’s query parameters, not as the request body. This is because you are using the requests.post method, which typically sends data in the request body for methods like POST.

According to the Authorizing OAuth Apps, this data should be send as a request body.