没有为Facebook按钮调用onClick()-reactJS

时间:2018-12-09 19:14:32

标签: javascript reactjs facebook onclick

由于某种原因,我的onClick处理程序无法与facebook按钮(位于https://developers.facebook.com/docs/facebook-login/web/login-button/上)一起使用。但是它将与一个普通的div一起工作。

您知道为什么没有在Facebook按钮(第二格)上调用onClick吗?

template.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
template.setErrorHandler(new DefaultResponseErrorHandler() {
    public boolean hasError(ClientHttpResponse response) throws IOException {
        HttpStatus statusCode = response.getStatusCode();
        return statusCode.series() == HttpStatus.Series.SERVER_ERROR;
    }
});

症状

<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency> 从未被呼叫。

编辑:跟进

基于@luschn的回复以及其他一些问题(特别是Implement Facebook API login with reactjs

我必须规避我的<div onClick={this._handleFBLogin}>Facebook Login (working)</div> <div onClick={this._handleFBLogin} className="fb-login-button" data-max-rows="1" data-size="large" data-button-type="continue_with" data-show-faces="false" data-auto-logout-link="false" data-use-continue-as="false" /> 函数,该函数调用一个函数来处理facebook身份验证并直接处理facebook身份验证。以下是onClick()中的相关代码:

_handleFBLogin()

请注意绑定并订阅auth.statusChange。

而且由于此订阅事件,我不需要添加componentDidMount()

最后,我原始的_handleFBLogin代码为:

        const facebookCallback = (response) => {
            return this._facebookCallback(response)
        }
        window.fbAsyncInit = function() {
            FB.init({
                appId      : FACEBOOK_APP_ID,
                cookie     : true,  // enable cookies to allow the server to access the session
                version    : FACEBOOK_API_VERSION
            });

            FB.Event.subscribe('auth.statusChange', function(response) {
                facebookCallback(response)
            });
        }.bind(this);

1 个答案:

答案 0 :(得分:2)

您必须使用onlogin参数/属性,因为您可以在文档中阅读。另外,您可以将自己的自定义按钮与此配合使用:https://developers.facebook.com/docs/reference/javascript/FB.login/

使用您自己的onClick方法将毫无意义,因为按钮插件会为您处理登录。