A JS-interop layer for Google Identity's Sign In With Google SDK.
See the original JS SDK reference:
This package is the Dart JS-interop layer of the new Sign In With Google SDK. Here's the API references for both of the sub-libraries:
id.dart
: Sign In With Google JavaScript API referenceoauth2.dart
: Google 3P Authorization JavaScript Library for websites - API referenceloader.dart
: An (optional) loader mechanism that installs the library and resolves a Future<void>
when it's ready.There are two ways to load the JS SDK in your app.
The most performant way is to modify your web/index.html
file to insert a script tag as recommended. Place the script
tag in the <head>
of your site:
<head> <!-- ··· --> <!-- Include the GSI SDK below --> <script src="https://accounts.google.com/gsi/client" async defer></script> </head>
loadWebSdk
function (on-demand)An alternative way, that downloads the SDK on demand, is to use the loadWebSdk
function provided by the library. A simple location to embed this in a Flutter Web only app can be the main.dart
:
import 'package:google_identity_services_web/loader.dart' as gis; // ··· void main() async { await gis.loadWebSdk(); // Load the GIS SDK // The rest of your code... // ··· }
(Note that the above won‘t compile for mobile apps, so if you’re developing a cross-platform app, you'll probably need to hide the call to loadWebSdk
behind a conditional import/export.)
Once the SDK has been loaded, it can be used by importing the correct library:
import 'package:google_identity_services/id.dart';
for Authentication.id
JSObject that binds to google.accounts.id
.import 'package:google_identity_services/oauth2.dart';
for Authorization.oauth2
JSObject that binds to google.accounts.oauth2
.Watch the browser's development tools JS console while using this package. Information about errors during initialization and use of the library will be displayed there.
Some common issues identified so far:
When you perform local tests or development, you must add both
http://localhost
andhttp://localhost:<port_number>
to the Authorized JavaScript origins box. The Referrer-Policy response header must also be set tono-referrer-when-downgrade
when using http and localhost.
The new SDK is introducing concepts that are on track for standardization to most browsers, and it might not be compatible with older browsers.
Refer to the official documentation site for the latest browser compatibility information of the underlying JS SDK:
This web-only package uses dart:test
to test its features. They can be run with dart test -p chrome
.
(Look at test/README.md
and tool/run_tests.dart
for more info.)