onClick () для кнопки facebook не вызывается - реагировать на JS - PullRequest
0 голосов
/ 09 декабря 2018

По какой-то причине мой обработчик onClick не работает с кнопкой facebook (находится в https://developers.facebook.com/docs/facebook-login/web/login-button/)., но он будет работать с общим делителем.

Любая идея, почему onClick нене вызывается на кнопке facebook (второй div)?

<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" />

Симптомы :

onClick() никогда даже не вызывается.

РЕДАКТИРОВАТЬ: продолжение

На основании ответа @ luschn и некоторых других вопросов (в частности: Реализовать вход в Facebook API с помощью activjs )

Мне пришлось обойти мою _handleFBLogin() функцию, которая вызывала функцию для обработки авторизации в facebook и непосредственно обрабатывать авторизацию в facebook. Вот соответствующий код в componentDidMount():

        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);

Обратите внимание на привязку и подпишитеськ auth.statusChange.

Также мне не нужно было добавлять data-onlogin из-за этого события подписки.

Наконец, мой исходный код _handleFBLogin был:

_handleFBLogin = () => {
        FB.login(response => {
            this._facebookCallback(response)
        }, {scope: 'public_profile,email'})
    }

1 Ответ

0 голосов
/ 09 декабря 2018

Вместо этого вы должны использовать параметр / атрибут onlogin, как вы можете прочитать в документации.Кроме того, вы можете использовать свою собственную кнопку с этим: https://developers.facebook.com/docs/reference/javascript/FB.login/

Использование собственного метода onClick в любом случае было бы бессмысленным, потому что плагин кнопки обрабатывает вход для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...