intuit / oauth-pythonclient

The Python OAuth client provides a set of methods that make it easier to work with Intuit's OAuth and OpenID Connect implementation.
Apache License 2.0
70 stars 55 forks source link

get_bearer_token and refresh should return the parsed JSON response. #15

Open dreid opened 4 years ago

dreid commented 4 years ago

Currently these only set the values in the json response as attributes of the AuthClient this makes it difficult to know which attributes will be available when, for instance, get_bearer_token sets realm_id but refresh doesn't.

We want results of talking to AuthClient to be able to participate in our strict runtime type checking which involves converting a primitive python type into an attrs dataclass. Having to construct this dictionary out of the AuthClient before we can do that is annoying and error prone.

fjolin-intuit commented 4 years ago

Thanks @dreid. I'll see about returning the JSON response.

fjolin-intuit commented 4 years ago

@dreid We are opening up our clients for contribution for hacktoberfest.

b4thestorm commented 3 years ago

currently, because it doesn't return JSON, it seems to return nothing. But after Intuit hits your callback url it implicitly passes the accesstoken and refresh token into the auth_client object.

So you write a callback that looks like this:

Screen Shot 2021-01-19 at 11 40 00 AM

and then in the next line, after pdb you can access the access_token like this: auth_client.access_token auth_client.refresh_token

nothing is returned from auth_client.get_bearer_token(auth_code) it is only implicitly added to the auth_client object itself.

fjolin-intuit commented 3 years ago

Hi @b4thestorm - This is the expected behavior with get_bearer_token making the request : send_request('POST', self.token_endpoint, headers, self, body=urlencode(body), session=self) and if things looks good we set the dictionary in that set_attributes(obj, response_json): method. As this isn't a breaking issue - I thought I'd let the community collaborate on it but if enough folks are being confused by it we can have a look at returning the parsed JSON.