[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.0bq. 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.