felangel / fresh

🍋 A token refresh library for Dart.
https://github.com/felangel/fresh
360 stars 57 forks source link

[fresh_graphql] wrong auth status #82

Closed subzero911 closed 4 months ago

subzero911 commented 1 year ago

At the first time I do setToken(), status always turns to "unauthorized". After refresh it becomes authorized.

code:

final freshLink = FreshLink.oAuth2(
    tokenStorage: InMemoryTokenStorage(),
    refreshToken: (token, client) async {
      // Perform refresh and return new token
      log.d('refreshing token!');
      return OAuth2Token(accessToken: accessToken, tokenType: 'Bearer'); // TODO refresh with RefreshToken
    },
    shouldRefresh: (response) => true, // TODO implement
  )..authenticationStatus.listen(log.d);
  await freshLink.setToken(OAuth2Token(accessToken: accessToken, tokenType: 'Bearer'));

I debugged it and cannot find an issue, but the problem is definitely in setToken(). I await it and suddenly execution goes to void _updateStatus where token is null !

subzero911 commented 1 year ago

That's extremely strange, but if I subscribe to status AFTER setToken(), it works just fine:

image

Result:

image

Maybe the problem's because of this line

image

When I create a FreshLink, the setter runned, and it suddenly turns status to "unauthenticated". Just guessing...

felangel commented 4 months ago

This has been fixed in #96