noname
noname

Reputation: 113

Python Requests to Forge API - 401 Response "Authorization failed"

def get_token():
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    data = {'client_id': 'XXX', 'client_secret': 'XXX', 'grant_type': 'client_credentials', 'scope': 'data:read'}
    response = requests.post('https://developer.api.autodesk.com/authentication/v1/authenticate', headers=headers, data=data)
    return response.json()['access_token']

print('Bearer ' + get_token())
response_form_templates = requests.get('https://developer.api.autodesk.com/construction/forms/v1/projects/:projectId/form-templates', headers={'Authorization': 'Bearer ' + get_token()})
print(response_form_templates.json())
print(response_form_templates)

I'm trying to use python requests to simply get back the form-templates and all I'm getting back is a 401 response and a message saying "Authorization failed". The few print statements in there are from my trying to debug what's going wrong, but with my client_id and client_secret in there, it gives me those errors.

Any idea as to what could be wrong would be really helpful, thanks.

Upvotes: 0

Views: 385

Answers (2)

Arrotech
Arrotech

Reputation: 109

You are using a 2-legged token instead of a 3-legged token. As you can see from the image below, you require a 3-legged token when you want to retrieve form templates.

enter image description here

Use this link and see how you can get a 3-legged token.

Upvotes: 1

Petr Broz
Petr Broz

Reputation: 9942

Btw. we don't have an official Forge SDK for Python yet but there's a simple, unofficial one here: https://github.com/petrbroz/forge-sdk-python that you could perhaps use as a reference when building the HTTP requests yourself. For example, here's how the SDK retrieves the 2-legged access token: https://github.com/petrbroz/forge-sdk-python/blob/develop/src/autodesk_forge_sdk/auth.py#L147-L178.

Upvotes: 1

Related Questions