I'm not familiar with the GTMOAuth2 library but authentication.accessToken
is a property, so and there doesn't seem to be anything that prevents it from being KVO compliant. Adding an observer should work for you in all cases, both for the async and the sync. Therefore, I'd consider only the async case.
If you want to make your solution even cleaner, then you should definitely try Reactive Cocoa.