code: function Strategy(options, verify) {
    options = options || {};
    options.clientID = options.devKey;
    // FamilySearch requires an empty string, the _oauth2 library requires that it exist
    options.clientSecret = " ";
    options.authorizationURL = options.authorizationURL || 'https://ident.familysearch.org/cis-web/oauth2/v3/authorization';
    options.tokenURL = options.tokenURL || 'https://ident.familysearch.org/cis-web/oauth2/v3/token';
  
    OAuth2Strategy.call(this, options, verify);
    this.name = 'familysearch';
    this._userProfileURL = options.userProfileURL || 'https://familysearch.org/platform/users/current';
  }
docs: `Strategy` constructor.
  
  The FamilySearch authentication strategy authenticates requests by delegating to
  FamilySearch 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 `done`
  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:
  - `devKey`        FamilySearch Developer Key
  - `callbackURL`   URL to which FamilySearch will redirect the user after granting authorization
  
  Examples:
  
  passport.use(new FamilySearchStrategy({
  devKey:      '123-456-789',
  callbackURL: 'https://www.example.net/auth/familysearch/callback'
  },
  function(accessToken, refreshToken, profile, done) {
  User.findOrCreate(..., function (err, user) {
  done(err, user);
  });
  }
  ));
  
  @param {Object} options
  @param {Function} verify
  @api public