Repository: flutter
Issue: google_sign_in throws an Unknown PlatformException after token expires
Labels: c: crash,platform-android,customer: crowd,p: google_sign_in,package,P2,team-android,triaged-android

## Steps to Reproduce

1. Create a simple Flutter project with `google_sign_in` but without `firebase_auth` (or any Firebase dependency).
2. Authenticate with a Google account.
3. Try accessing the `authentication` via `await <GoogleSignInAccount>.authentication` and read the token.
4. Keep the application open for over an hour (until the token expires).
5. Try to again `await <GoogleSignInAccount>.authentication`: this throws a `PlatformException(exception, Unknown, null)`.

## Small code snippet
_Note: `auth_service` is just a wrapper that exposes a `GoogleSignIn` instance._
```
Future<void> tryPlatform() async {
  var account = auth_service.google.currentUser;

  if (account == null) throw Exception('No account.');

  final authentication = await account.authentication;

  if (authentication == null) throw Exception('No authentication.');

  final response = await http.get(
      'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=${authentication.idToken}');

  if (response.statusCode != 200) throw Exception('Failed check.');

  final data = convert.jsonDecode(response.body) as Map<String, dynamic>;

  if (data == null || !data.containsKey('exp'))
    throw Exception('Failed decoding.');

  print(DateTime.fromMillisecondsSinceEpoch(int.parse(data['exp']) * 1000));
}
```

## Screenshot
_Note: I tried to call the function three times before the token expired and once after it did. This is the result._
<img width="732" alt="image" src="https://user-images.githubusercontent.com/16031715/59045058-9f849080-887f-11e9-8fc7-413043ff021b.png">

## Flutter Doctor
```
[✓] Flutter (Channel stable, v1.5.4-hotfix.2, on Mac OS X 10.14.5 18F132, locale en-US)
    • Flutter version 1.5.4-hotfix.2 at /Users/emilio/Library/Flutter
    • Framework revision 7a4c33425d (5 weeks ago), 2019-04-29 11:05:24 -0700
    • Engine revision 52c7a1e849
    • Dart version 2.3.0 (build 2.3.0-dev.0.5 a1668566e5)

 
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/emilio/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    • All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.2.1, Build version 10E1001
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[✓] Android Studio (version 3.4)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 36.0.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[!] VS Code (version 1.34.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (2 available)
    • Android SDK built for x86 • emulator-5554                        • android-x86 • Android 9 (API 28) (emulator)
```