gapi is not defined - Google sign in issue with gapi.auth2.init

后端 未结 6 1506
死守一世寂寞
死守一世寂寞 2020-11-29 05:07

I\'m trying to implement Google Sign In and retrieve the profile information of the user. The error is: Uncaught ReferenceError: gapi is not defined. Why is that?



        
6条回答
  •  日久生厌
    2020-11-29 05:40

    While these answers helped me, I believe there is better answer in official docs.

    See Integrating Google Sign-In using listeners

    var auth2; // The Sign-In object.
    var googleUser; // The current user.
    
    /**
     * Calls startAuth after Sign in V2 finishes setting up.
     */
    var appStart = function() {
      gapi.load('auth2', initSigninV2);
    };
    
    /**
     * Initializes Signin v2 and sets up listeners.
     */
    var initSigninV2 = function() {
      auth2 = gapi.auth2.init({
          client_id: 'CLIENT_ID.apps.googleusercontent.com',
          scope: 'profile'
      });
    
      // Listen for sign-in state changes.
      auth2.isSignedIn.listen(signinChanged);
    
      // Listen for changes to current user.
      auth2.currentUser.listen(userChanged);
    
      // Sign in the user if they are currently signed in.
      if (auth2.isSignedIn.get() == true) {
        auth2.signIn();
      }
    
      // Start with the current live values.
      refreshValues();
    };
    
    /**
     * Listener method for sign-out live value.
     *
     * @param {boolean} val the updated signed out state.
     */
    var signinChanged = function (val) {
      console.log('Signin state changed to ', val);
      document.getElementById('signed-in-cell').innerText = val;
    };
    
    /**
     * Listener method for when the user changes.
     *
     * @param {GoogleUser} user the updated user.
     */
    var userChanged = function (user) {
      console.log('User now: ', user);
      googleUser = user;
      updateGoogleUser();
      document.getElementById('curr-user-cell').innerText =
        JSON.stringify(user, undefined, 2);
    };
    
    /**
     * Updates the properties in the Google User table using the current user.
     */
    var updateGoogleUser = function () {
      if (googleUser) {
        document.getElementById('user-id').innerText = googleUser.getId();
        document.getElementById('user-scopes').innerText =
          googleUser.getGrantedScopes();
        document.getElementById('auth-response').innerText =
          JSON.stringify(googleUser.getAuthResponse(), undefined, 2);
      } else {
        document.getElementById('user-id').innerText = '--';
        document.getElementById('user-scopes').innerText = '--';
        document.getElementById('auth-response').innerText = '--';
      }
    };
    
    /**
     * Retrieves the current user and signed in states from the GoogleAuth
     * object.
     */
    var refreshValues = function() {
      if (auth2){
        console.log('Refreshing values...');
    
        googleUser = auth2.currentUser.get();
    
        document.getElementById('curr-user-cell').innerText =
          JSON.stringify(googleUser, undefined, 2);
        document.getElementById('signed-in-cell').innerText =
          auth2.isSignedIn.get();
    
        updateGoogleUser();
      }
    }
    

提交回复
热议问题