···719719Event::listen(OAuthTokenRefreshed::class, function (OAuthTokenRefreshed $event) {
720720 // The CredentialProvider.updateCredentials() is already called,
721721 // but you can do additional logging or notifications here
722722- Log::info("Token refreshed for: {$event->did}");
722722+ Log::info("Token refreshed for: {$event->session->did()}");
723723});
724724```
725725···759759760760### OAuthTokenRefreshing / OAuthTokenRefreshed
761761762762-Fired before and after automatic token refresh:
762762+Fired before and after automatic token refresh. Use `OAuthTokenRefreshing` to invalidate your stored refresh token before it's used (refresh tokens are single-use):
763763764764```php
765765use SocialDept\AtpClient\Events\OAuthTokenRefreshing;
766766use SocialDept\AtpClient\Events\OAuthTokenRefreshed;
767767768768-// Before token refresh
769769-Event::listen(OAuthTokenRefreshing::class, function ($event) {
770770- Log::info('Refreshing token for: ' . $event->did);
768768+// Before token refresh - invalidate old refresh token
769769+Event::listen(OAuthTokenRefreshing::class, function (OAuthTokenRefreshing $event) {
770770+ // $event->session gives access to did(), handle(), etc.
771771+ Log::info('Refreshing token for: ' . $event->session->did());
771772});
772773773773-// After token refresh
774774-Event::listen(OAuthTokenRefreshed::class, function ($event) {
774774+// After token refresh - new tokens available
775775+Event::listen(OAuthTokenRefreshed::class, function (OAuthTokenRefreshed $event) {
776776+ // $event->session - the session being refreshed
777777+ // $event->token - the new AccessToken with fresh tokens
775778 // CredentialProvider.updateCredentials() is already called automatically
776776- Log::info('Token refreshed for: ' . $event->did);
779779+ Log::info('Token refreshed for: ' . $event->session->did());
777780});
778781```
779782