class FacebookClient extends OAuth20Client {

    /**
     * <p>Constructor for FacebookClient.</p>
     */
    public FacebookClient() {
        configuration = new FacebookConfiguration();
    }

    /**
     * <p>Constructor for FacebookClient.</p>
     *
     * @param key a {@link String} object
     * @param secret a {@link String} object
     */
    public FacebookClient(final String key, final String secret) {
        configuration = new FacebookConfiguration();
        setKey(key);
        setSecret(secret);
    }

    /** {@inheritDoc} */
    @Override
    protected void internalInit(final boolean forceReinit) {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override
    public FacebookConfiguration getConfiguration() {
        return (FacebookConfiguration) configuration;
    }

    /**
     * <p>getScope.</p>
     *
     * @return a {@link String} object
     */
    public String getScope() {
        return getConfiguration().getScope();
    }

    /**
     * <p>setScope.</p>
     *
     * @param scope a {@link String} object
     */
    public void setScope(final String scope) {
        getConfiguration().setScope(scope);
    }

    /**
     * <p>getFields.</p>
     *
     * @return a {@link String} object
     */
    public String getFields() {
        return getConfiguration().getFields();
    }

    /**
     * <p>setFields.</p>
     *
     * @param fields a {@link String} object
     */
    public void setFields(final String fields) {
        getConfiguration().setFields(fields);
    }

    /**
     * <p>getLimit.</p>
     *
     * @return a int
     */
    public int getLimit() {
        return getConfiguration().getLimit();
    }

    /**
     * <p>setLimit.</p>
     *
     * @param limit a int
     */
    public void setLimit(final int limit) {
        getConfiguration().setLimit(limit);
    }
}

        CommonHelper.assertNotBlank("fields", getConfiguration().getFields());
        configuration.setApi(FacebookApi.instance());
        configuration.setProfileDefinition(new FacebookProfileDefinition());
        configuration.setHasBeenCancelledFactory(ctx -> {
            val error = ctx.getRequestParameter(OAuthCredentialsException.ERROR).orElse(null);
            val errorReason = ctx.getRequestParameter(OAuthCredentialsException.ERROR_REASON).orElse(null);
            val userDenied = "access_denied".equals(error) && "user_denied".equals(errorReason);
            val errorCode = ctx.getRequestParameter("error_code").orElse(null);
            val errorMessage = ctx.getRequestParameter("error_message").orElse(null);
            val hasError = CommonHelper.isNotBlank(errorCode) || CommonHelper.isNotBlank(errorMessage);
            if (userDenied || hasError) {
                return true;
            } else {
                return false;
            }
        });
        configuration.setWithState(true);
        setProfileCreatorIfUndefined(new FacebookProfileCreator(configuration, this));

        super.internalInit(forceReinit);
    
<methods>public non-sealed void <init>() ,public java.lang.String getKey() ,public java.lang.String getSecret() ,public void setKey(java.lang.String) ,public void setSecret(java.lang.String) <variables>protected org.pac4j.oauth.config.OAuth20Configuration configuration