Skip to content

google_signin does not work in safari #54106

@SBNTT

Description

@SBNTT
<!DOCTYPE html>
<html>
<head>
  <meta name="google-signin-client_id" content="XXXXXXXXXXXX.apps.googleusercontent.com">

  <meta charset="UTF-8">
  <meta content="IE=Edge" http-equiv="X-UA-Compatible">
  <meta name="description" content="A new Flutter project.">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-mobile-web-app-title" content="google_signin_safari">
  <link rel="apple-touch-icon" href="icons/Icon-192.png">
  <link rel="shortcut icon" type="image/png" href="favicon.png"/>
  <title>google_signin_safari</title>
  <link rel="manifest" href="manifest.json">
</head>
<body>
  <script src="https://www.gstatic.com/firebasejs/7.13.2/firebase-app.js"></script>

  <script>
    var firebaseConfig = {
      apiKey: "XXXXXXXXXXXXXXX",
      authDomain: "XXXXXXXX.firebaseapp.com",
      projectId: "XXXXXXXX",
      appId: "XXXXXXXXXX"
    };
    firebase.initializeApp(firebaseConfig);
  </script>

  <script>
    if ('serviceWorker' in navigator) {
      window.addEventListener('load', function () {
        navigator.serviceWorker.register('flutter_service_worker.js');
      });
    }
  </script>
  <script src="main.dart.js" type="application/javascript"></script>
</body>
</html>
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {

  Widget build(BuildContext context) {
    return MaterialApp(
      title: "google_signin_safari",
      home: SigninPage(),
    );
  }

}

class SigninPage extends StatelessWidget {

  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
          child: Text("SIGNIN"),
          onPressed: () async {
            GoogleSignIn _googleSignIn = GoogleSignIn(
              scopes: [
                'email',
              ],
            );

            print("signin...");
            try {
              final account = await _googleSignIn.signIn();
              print(account);
            } catch (error) {
              print(error);
              print(error.runtimeType);
              // don't know what to do with NativeJavaScriptObject ..
            }
          },
        ),
      ),
    );
  }

}

i'm using the latest version of google_signin (4.4.0)

This demo app works on chrome / Android and iOS but in safari, i got these outputs:

[Log] signin... (dart_sdk.js, line 31626)
[Error] The source list for Content Security Policy directive 'script-src' contains an invalid source: ''strict-dynamic''. It will be ignored.
[Log] [object Object] (dart_sdk.js, line 31626)
[Log] NativeJavaScriptObject (dart_sdk.js, line 31626)

without the try/catch

[Log] signin... (dart_sdk.js, line 31626)
[Error] The source list for Content Security Policy directive 'script-src' contains an invalid source: ''strict-dynamic''. It will be ignored.
[Error] Unhandled Promise Rejection: Error
	throw_ (dart_sdk.js:4070)
	(anonymous function) (dart_sdk.js:41782)
	_microtaskLoop (dart_sdk.js:41646)
	_startMicrotaskLoop (dart_sdk.js:41652)
	(anonymous function) (dart_sdk.js:37845)
	promiseReactionJob
flutter doctor
[✓] Flutter (Channel beta, v1.15.17, on Mac OS X 10.15.4 19E266, locale fr)
   • Flutter version 1.15.17 at /Users/sbntt/flutter
   • Framework revision 2294d75bfa (4 weeks ago), 2020-03-07 00:28:38 +0900
   • Engine revision 5aff311948
   • Dart version 2.8.0 (build 2.8.0-dev.12.0 9983424a3c)


[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
   • Android SDK at /Users/sbntt/Library/Android/sdk
   • Android NDK location not configured (optional; useful for native profiling support)
   • Platform android-29, build-tools 29.0.2
   • Java binary at: /Users/sbntt/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/192.6308749/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
   • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
   • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
   • Xcode at /Applications/Xcode.app/Contents/Developer
   • Xcode 11.4, Build version 11E146
   • CocoaPods version 1.8.4

[✓] Chrome - develop for the web
   • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.6)
   • Android Studio at /Users/sbntt/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/192.6308749/Android Studio.app/Contents
   • Flutter plugin version 45.0.1
   • Dart plugin version 192.7761
   • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

[!] IntelliJ IDEA Ultimate Edition (version 2019.3.4)
   • IntelliJ at /Users/sbntt/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
   ✗ Flutter plugin not installed; this adds Flutter specific functionality.
   ✗ Dart plugin not installed; this adds Dart specific functionality.
   • For information about installing plugins, see
     https://flutter.dev/intellij-setup/#installing-the-plugins

[✓] VS Code (version 1.43.2)
   • VS Code at /Applications/Visual Studio Code.app/Contents
   • Flutter extension version 3.9.0

[✓] Connected device (2 available)
   • Chrome     • chrome     • web-javascript • Google Chrome 80.0.3987.149
   • Web Server • web-server • web-javascript • Flutter Tools

Metadata

Metadata

Assignees

Labels

found in release: 1.17Found to occur in 1.17has reproducible stepsThe issue has been confirmed reproducible and is ready to work onp: google_sign_inThe Google Sign-In pluginpackageflutter/packages repository. See also p: labels.platform-webWeb applications specifically

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions