code: function Strategy(options, verify) {
    options = options || {};
    options.authorizationURL = options.authorizationURL || 'https://accounts.google.com/o/oauth2/v2/auth';
    options.tokenURL = options.tokenURL || 'https://www.googleapis.com/oauth2/v4/token';
  
    OAuth2Strategy.call(this, options, verify);
    this.name = 'google';
    this._userProfileURL = options.userProfileURL || 'https://www.googleapis.com/oauth2/v3/userinfo';
    
    var url = uri.parse(this._userProfileURL);
    if (url.pathname.indexOf('/userinfo') == (url.pathname.length - '/userinfo'.length)) {
      this._userProfileFormat = 'openid';
    } else {
      this._userProfileFormat = 'google+'; // Google Sign-In
    }
  }
docs: `Strategy` constructor.
  
  The Google authentication strategy authenticates requests by delegating to
  Google using the OAuth 2.0 protocol.
  
  Applications must supply a `verify` callback which accepts an `accessToken`,
  `refreshToken` and service-specific `profile`, and then calls the `cb`
  callback supplying a `user`, which should be set to `false` if the
  credentials are not valid.  If an exception occured, `err` should be set.
  
  Options:
  - `clientID`      your Google application's client id
  - `clientSecret`  your Google application's client secret
  - `callbackURL`   URL to which Google will redirect the user after granting authorization
  
  Examples:
  
  passport.use(new GoogleStrategy({
  clientID: '123-456-789',
  clientSecret: 'shhh-its-a-secret'
  callbackURL: 'https://www.example.net/auth/google/callback'
  },
  function(accessToken, refreshToken, profile, cb) {
  User.findOrCreate(..., function (err, user) {
  cb(err, user);
  });
  }
  ));
  
  @constructor
  @param {object} options
  @param {function} verify
  @access public