Comments (5)
Hi @tsubery,
I'm hesitant to put this directly into this library. This library is meant to provide low-level OAuth2 building blocks.
Can you give me an example of how you are using this library so I can better understand what it is that you expect to accomplish?
Specifically, how are you storing tokens for later use?
from oauth2.
My use case is a long running background job that access google's api and collects information periodically. That means I need to store a token that eventually expires and need to be refreshed.
When I wrote the issue I forgot about the immutability of data in Elixir. I was thinking it would be clean and easy to make any request fetch for a new access token using the refresh token when necessary. This would work but the original client would not have the new access token and that might lead to many unnecessary round trips. I understand that this library does not implement a token store.
Having said that, there is still some minimal amount of logic can be abstracted away from users like me. All I really want is a token that is good for the next few minutes to do the required work. Maybe a function like this would be useful:
Updated:
def fresh_client_for(client, time_out_seconds) do
expired_at = client.token.expired_at
if expired_at && :os.system_time(:milli_seconds) + timeout_seconds < expired_at do
refresh_token(client, [],[],[])
else
client
end
end
Long running processes could use
fresh_client = fresh_client_for(stored_client, @max_access_time)
OAuth2.Client.get(fresh_client,...
from oauth2.
Yeah, I've thought about including some sort of token store for a while. However, it seems difficult to make something generic enough to work with all use cases without further thought.
from oauth2.
Yea, seems like it might be mixing too many responsibilities. What do you think about the new function I suggested?
from oauth2.
@tsubery not at this time. Thank you.
from oauth2.
Related Issues (20)
- Not able get access token with ClientCredentials strategy HOT 10
- Support For HTTP Basic Auth hasn't (yet) been officially released HOT 3
- Global Serializer Registration HOT 1
- QuickBooks with AuthCode strategy doesn't like client_id with basic auth HOT 5
- Allow authorizing without basic auth header HOT 7
- Issue with refresh_token HOT 5
- Tuple {:option, :server_only, :honor_cipher_order} being returned for error reason HOT 2
- OAuth2.Client.get_token!/2 not deserializing token response HOT 6
- Support for logging out of identity provider HOT 1
- OTP 23 OAuth2.Error HOT 2
- Oauth2.Client.get_token not working for Google HOT 5
- No Case clause matching when setting token_method HOT 2
- Defaults to application/json when content-type header is not present HOT 4
- PKCE flow? HOT 3
- %OAuth2.AccessToken{} have not parsed well for Google auth usage HOT 4
- "Accept" header should be "application/json" when getting token HOT 9
- I want to curse and curse. A lot HOT 1
- How to get user_id or username in "callback"? HOT 2
- OAuth2.Client.get_token fails for Octa servers HOT 5
- dialyzer problem HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from oauth2.