简体   繁体   中英

How can i get the access token through google sign in -- Flutter

I want to get the access token from google sign and save it as a variable so I'll be able to push it to my own API , this question has been asked before but the answers are outdated . I'm using this package : Google sign in her,s my log in code that i access through a button :

  GestureDetector(
                              onTap: () {
                                _googleSignIn.signIn().catchError((e) {
                                  print('Erorr');
                                });
                                ;
                              },
 Future<bool> google() async {
    try {
      final googleUser = await googleSignIn.signIn();
      final googleAuth = await googleUser.authentication;
      final AuthCredential credential = GoogleAuthProvider.credential(
        accessToken: googleAuth?.accessToken,// accessToken 
        idToken: googleAuth?.idToken,
      );
      users = (await auth.signInWithCredential(credential)).user;
      if (users == null) {
        return false;
      }
      return true;
    } catch (e) {
      print('this is error .......$e');
      return null;
    }

you can get the access token

googleAuth.accessToken //fellowing my code
Future<FirebaseUser> signInWithGoogle(SignInViewModel model) async {

  model.state =ViewState.Busy;
  GoogleSignInAccount googleSignInAccount = await _googleSignIn.signIn();
  GoogleSignInAuthentication googleSignInAuthentication =
  await googleSignInAccount.authentication;
  AuthCredential credential = GoogleAuthProvider.getCredential(
    accessToken: googleSignInAuthentication.accessToken,
    idToken: googleSignInAuthentication.idToken,
  );
  AuthResult authResult = await _auth.signInWithCredential(credential);
  _user = authResult.user;
  assert(!_user.isAnonymous);
  assert(await _user.getIdToken() != null);
  FirebaseUser currentUser = await _auth.currentUser();
  assert(_user.uid == currentUser.uid);
  model.state =ViewState.Idle;
  print("User Name: ${_user.displayName}");
  print("User Email ${_user.email}");

}

To get access token when logged in with google use

final credential = GoogleAuthProvider.credential(
    accessToken: googleAuth?.accessToken,
    idToken: googleAuth?.idToken,
  );

Full method:

import 'package:google_sign_in/google_sign_in.dart';

Future<UserCredential> signInWithGoogle() async {
  // Trigger the authentication flow
  final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();

  // Obtain the auth details from the request
  final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication;

  // Create a new credential
  final credential = GoogleAuthProvider.credential(
    accessToken: googleAuth?.accessToken,
    idToken: googleAuth?.idToken,
  );

  // Once signed in, return the UserCredential
  return await FirebaseAuth.instance.signInWithCredential(credential);
}

for document https://firebase.flutter.dev/docs/auth/social/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM