[RESOLVIDO] Tela de login do facebook não aparece na Webview.



  • Olá,
    Postei no fórum geral um problema que tem me tomado muito tempo, e como meu inglês não é muito bom, estou postando aqui também.
    Estou fazendo um projeto em que preciso exibir a tela de login no facebook em uma QWebView.
    Consigo exibí-la no GNU/Linux e em máquinas Windows que tem o QtCreator instalado.

    Após várias pesquisas aqui no fórum geral, percebi que algumas pessoas com o mesmo problema encontraram solução instalando o OpenSSL. Após fazer o mesmo passei a exibir qualquer página https, exceto a página de login do facebook cuja webview ainda aparece em branco.

    Já estou tentando isso há dias e já não sei mais o que testar.
    Estou usando Qt4.8.1 no GNU/Linux e no Windows, sendo que neste útimo uso o Mingw.
    Agradeço antecipadamente qualquer orientação.



  • É por essas e outras que tenho pensado em não usar Qt para funcionalidades WEB. Muitos bugs e incompatibilidades no QtWebKit



  • Olá Munra,
    No meu caso específico ele funcionou bem no linux e em duas máquinas windows (xp e 7) que tinham o qtcreator instalado. Ela não funcionou em outras duas com o windows.
    O curioso é que em uma das que não funcionou apenas o Qt libraries (mingw) estava instalado e em outra que estava funcionando eu desinstalei o creator e o programa continuou funcionando. Curioso tb é que qualquer outra página https funciona em todas, o problema é apenas com o facebook.

    Ainda acredito que seja alguma dll faltando ou na versão errada.
    Meu pedido de ajuda aos amigos do fórum é alguma sugestão de que testes eu poderia fazer porque já estou sem idéias...



  • Igorbrp,

    Todas as versões, no Windows, são o Qt 4.8.1 - Mingw?
    Na que não funcionou o Qt está no PATH?

    Já tentou colocar isso no seu código?

    @
    QWebSettings::globalSettings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
    @

    Depois, quando o QWebView ficar branco, você clica com o botão direito do mouse, e depois em "Inspect". Aí você pode dar uma olhada no console do javascript e ver o que deu de errado.



  • TioRoy,
    Obrigado por responder.

    bq. Todas as versões, no Windows, são o Qt 4.8.1 – Mingw?

    Sim.

    bq. "Na que não funcionou o Qt está no PATH?"

    O Qt não está no PATH de nenhuma máquina.
    Aliás todas possuem o mesmo PATH: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0

    bq. Já tentou colocar isso no seu código?
    @QWebSettings::globalSettings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);@

    Coloquei e segui suas orientações.
    Na máquina que não funciona no console consta: Failed to load resource: Error creating SSL context()

    Adicionalmente criei um pequeno projeto com:
    @QWebview webView;
    QNetworkAccessManager manager;
    QNetworkReply *reply;@

    onde logo após a webView emitir loadFinished(bool) carrego a url no manager para ler sslErrors(QList<QSslError>)
    @reply = manager.get(QNetworkRequest(ui->webView->url()));@

    na máquina sem o Qt recebo Finished, error = ProtocolUnknownError - Protocol "about" is unknown em
    @sslErr.at(i).errorString();@

    e recebo false em
    @bool isSSLSupported = QSslSocket::supportsSsl();@

    Estou começando uma instalação do Windows numa máquina virtual onde vou fazer os testes entre instalações do OpenSSL, QtLibrary e QtCreator para ver o ponto exato onde programa começa a funcionar.

    O que não entendo é porque funciona na máquina com a instalação do Qt mesmo sem o caminho constar no PATH apesar dele (o programa) estar sendo executado numa pasta no desktop.

    Vou colocar os resultados aqui e qualquer ajuda será muito bem vinda.



  • No seu teste, o código:

    @
    ui->webView->url()
    @

    Está retornando "about:blank". Por isso do erro" _ProtocolUnknownError".

    Ví em alguns lugares que copiando as DLL's "libeay32.dll" e "ssleay32.dll" (DLL's do OpenSSL) resolvem o problema. Você pode ver se no diretório bin do QtCreator tem.



  • Tio Roy.
    De fato eu estava fazendo errado.
    Andei testando as versões 4.8.1 e* 5.2 *que possuem diferenças consideráveis na formatação das urls com QUrl. A partir da Qt5 a formatação de querys na url é feita com QUrlQuery. Enfim, acabei reaproveitando código indevido, mas gora estou fazendo a url na mão e está funcionando.
    Evito postar perguntas no fórum de assuntos já abordados, mas nesse caso embora já tivesse feito muitas pesquisas não estava conseguindo.
    Realmente para funcionar no Windows 7 basta instalar o OpenSSL.
    De qualquer forma muito obrigado, espero ajudá-lo em breve.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.