class WeiboClient extends OAuth20Client {

    /**
     * WeiboScope.
     * <p>More info at: <a href=
     * "http://open.weibo.com/wiki/Scope">Scope</a></p>
     */
    public enum WeiboScope {
        ALL,                        //     Request all of the following scope permissions
        EMAIL,                      //    User's contact mailbox
        DIRECT_MESSAGES_WRITE,   //     Private message sending interface
        DIRECT_MESSAGES_READ,    //     Private message reading interfac
        INVITATION_WRITE,         //     Invitation to send interface
        FRIENDSHIPS_GROUPS_READ,//    Friend group read interface group
        FRIENDSHIPS_GROUPS_WRITE,//    Friend group write interface group
        STATUSES_TO_ME_READ,     // Directional microblog reading interface group
        FOLLOW_APP_OFFICIAL_MICROBLOG // Pay attention to the application of official Weibo
    }

    protected WeiboScope scope = WeiboScope.EMAIL;

    protected String scopeValue;

    /**
     * <p>Constructor for WeiboClient.</p>
     */
    public WeiboClient() {
    }

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

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

    /**
     * <p>Getter for the field <code>scope</code>.</p>
     *
     * @return a {@link WeiboClient.WeiboScope} object
     */
    public WeiboScope getScope() {
        return this.scope;
    }

    /**
     * <p>Setter for the field <code>scope</code>.</p>
     *
     * @param scope a {@link WeiboClient.WeiboScope} object
     */
    public void setScope(final WeiboScope scope) {
        this.scope = scope;
    }
}

        CommonHelper.assertNotNull("scope", this.scope);
        if (this.scope == null)
            this.scope = WeiboScope.EMAIL;
        this.scopeValue = this.scope.toString().toLowerCase();
        configuration.setApi(new WeiboApi20());
        configuration.setScope(scopeValue);
        configuration.setProfileDefinition(new WeiboProfileDefinition());
        configuration.setWithState(true);
        configuration.setHasBeenCancelledFactory(ctx -> {
            val error = ctx.getRequestParameter(OAuthCredentialsException.ERROR).orElse(null);
            if ("access_denied".equals(error)) {
                return true;
            }
            return false;
        });

        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