Como posso evitar função Facebook Connect isUserConnected de correr duas vezes em jQuery?

StackOverflow https://stackoverflow.com/questions/613612

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu tenho um pouco de um problema com uma integração Facebook.

Quando os meus usuários clicar em um link, uma função verifica se um usuário está logado no Facebook. Se eles não está logado, eu definir um pedaço de dados, e depois executar o material de login do Facebook. Quando o Facebook retornos que entrar, eu vou verificar o pedaço de dados que foram armazenados e executar a função original que selecionado.

O problema:

A função Facebook funciona duas vezes. Existem alguns comentários sobre os seus quadros de mensagens sobre esta questão, mas parece que este tem sido um problema desde o início da conexão, e não está sendo abordado.

Então, eu não quero esperar para o Facebook. Existe alguma maneira para mim para evitar que a função de chamar a minha função mais de uma vez?

Posso definir algo que diz 'executar uma vez'? O problema é que uma vez que ele é executado uma vez, se o usuário clicar novamente, vou precisar para executá-lo novamente, então eu não pode desativar completamente a função (mesmo se isso fosse possível).

Foi útil?

Solução

Isso é muito Hack-ish, mas deve começar em torno da questão do Facebook chamando sua função duas vezes. Desde que não há nenhum código, eu vou fazer algumas para o propósito da minha solução. Além disso, eu estou supondo que o código facebook login tem uma chamada de retorno (de que outra forma seria chamar a função duas vezes?).

// This function is what is called when the link is clicked
// funToRun - the function that should be run after login is confirmed.
// params - parameters to pass to fToRun, as an array
clickWrapper = function(funToRun, params)
{
    // Keeps track of the state of the click
    var doFunction = true;

    var callback = function()
    {
        if (doFunction)
        {
            funToRun.apply(this, params);
            doFunction = false;
        }
    }

    // The facebook 
    facebookLogin(callback);
}

Nesta solução, você está envolvendo a função que você deseja executar em um retorno de chamada que será executado apenas uma vez, desde doFunction irá evitar retornos futuros de fazer qualquer coisa. No entanto, ele será executado pelo menos uma vez cada vez que o usuário clica, desde doFunction é gerido localmente (e, portanto, é verdade, uma vez por cada clique).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top