Python code to access Workfront API using OAuth2 authenticaiton | Community
Skip to main content
lgaertner
Level 9
February 19, 2024
Solved

Python code to access Workfront API using OAuth2 authenticaiton

  • February 19, 2024
  • 1 reply
  • 1963 views

Hello,

 

Is there anybody, who could provide me with some Python code to access the Workfront API using OAuth2 authorization code flow?

 

I am currently too dump to make some progress on this issue...

 

Thanks in advance.

 

Regards

Lars

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by JagarlamudiVe

Hi @lgaertner 


from requests_oauthlib import OAuth2Session


authorization_base_url = "https://<your-domain>.my.workfront.com/attask/oauth/authorize"
token_url = "https://<your-domain>.my.workfront.com/attask/oauth/token"


client_id = "<your-client-id>" # Replace with your client ID
redirect_uri = "<your-redirect-URI>" # Replace with your redirect URI


oauth = OAuth2Session(client_id, redirect_uri=redirect_uri)


authorization_url, state = oauth.authorization_url(authorization_base_url)
webbrowser.open(authorization_url)


authorization_response = input('Enter the full callback URL')


token = oauth.fetch_token(
token_url,
authorization_response=authorization_response,
client_secret="<your-client-secret>") # Replace with your client secret

 

This is to get the User Profile:
response = oauth.get('https://<your-domain>.my.workfront.com/attask/api/user/profile')
print(response.json())

1 reply

JagarlamudiVeAccepted solution
Level 4
February 20, 2024

Hi @lgaertner 


from requests_oauthlib import OAuth2Session


authorization_base_url = "https://<your-domain>.my.workfront.com/attask/oauth/authorize"
token_url = "https://<your-domain>.my.workfront.com/attask/oauth/token"


client_id = "<your-client-id>" # Replace with your client ID
redirect_uri = "<your-redirect-URI>" # Replace with your redirect URI


oauth = OAuth2Session(client_id, redirect_uri=redirect_uri)


authorization_url, state = oauth.authorization_url(authorization_base_url)
webbrowser.open(authorization_url)


authorization_response = input('Enter the full callback URL')


token = oauth.fetch_token(
token_url,
authorization_response=authorization_response,
client_secret="<your-client-secret>") # Replace with your client secret

 

This is to get the User Profile:
response = oauth.get('https://<your-domain>.my.workfront.com/attask/api/user/profile')
print(response.json())

lgaertner
lgaertnerAuthor
Level 9
February 20, 2024

Hello Jvenkat,

 

Thanks a lot. Unfortunately it is not working for me yet...

 

I constantly do get the error message Missing access token parameter.

 

What do you use as redirect_uri and how is your callback URL formatted?

 

Regards

Lars

lgaertner
lgaertnerAuthor
Level 9
February 20, 2024

Correction:

 

I got it finally working!!!

 

Here is my final code:

 

import webbrowser from requests_oauthlib import OAuth2Session # Client-side Configuration client_id = "<clientID>" # Replace with your client ID client_secret = "<clientSecret>" redirect_uri = "http://127.0.0.1:8088" # Replace with your redirect URI # OAuth endpoints given in the Workfront API documentation authorization_base_url = 'https://oauth.my.workfront.com/integrations/oauth2/authorize' token_url = 'https://<your-domain>.my.workfront.com/integrations/oauth2/api/v1/token' response_type = 'code' # Create the OAuth2 Session oauth = OAuth2Session(client_id, redirect_uri=redirect_uri) # Redirect user to Workfront for authorization authorization_url, state = oauth.authorization_url(authorization_base_url) webbrowser.open(authorization_url) # User will get an authorization code. Copy it authorization_response = input('Enter the full callback URL: ') # Exchange the authorization code for a token token = oauth.fetch_token( token_url, authorization_response=authorization_response, client_secret = client_secret) print(token)

 

Thanks a lot @jagarlamudive