gpt4 book ai didi

Facebook Like 按钮的 Android WebView

转载 作者:IT老高 更新时间:2023-10-28 23:13:05 29 4
gpt4 key购买 nike

我正在尝试在 Android WebView 中创建类似 facebook 的功能(项目规范不允许打开浏览器,或任何 应用程序外 Activity )。

因此,限制是必须在 WebView 中完成。我设法使它成为一个对话框,并且在用户单击按钮后,它(WebView)成功地(在同一 View 中)重定向到 facebooks 登录页面。成功验证后,WebView(在对话框中)被重定向到带有 facebook header 的 blank page

有趣的是,当用户离开空白对话框并再次单击“赞”按钮时,它的工作原理非常完美(赞和不一样)——它以某种方式保持身份验证处于 Activity 状态。为了解决空白页,我尝试/使用了以下内容:

  • 使用 WebViewClientshouldOverloadUrlForwarding 将整个过程保持在同一个 WebView 对话框中。
  • 使用 WebChromeClient 正确执行 JavaScript - 没有它,登录后无法喜欢/不喜欢。
  • 尝试使用 setUserAgentString() 来模拟 Chrome 或 Firefox 等其他浏览器
  • 尝试了 SSL 错误证书处理(在 API 级别 8)(在 WebViewClient)

    @Override
    public void onReceivedSslError(WebView View ,SslErrorHandler 处理程序,SslError 错误){
    handler.proceed();
    }

  • 使用(以及所有可能的组合)

    webView.getSettings().setAppCacheEnabled(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

  • 还尝试使用 CookieSyncManagerCookieManager 和手动处理来持久化 cookie。

这一切都没有结果。非常感谢任何帮助!

最佳答案

要通过空白页,请执行以下操作:

 webview.setWebViewClient(new LikeWebviewClient(this));

private class LikeWebviewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
Log.d(TAG, "onPageFinished url: " +url);
// Facebook redirects to this url once a user has logged in, this is a blank page so we override this
// http://www.facebook.com/connect/connect_to_external_page_widget_loggedin.php?............
if(url.startsWith("http://www.facebook.com/connect/connect_to_external_page_widget_loggedin.php")){
String redirectUrl = getFacebookLikeUrl();
view.loadUrl(redirectUrl);
return;
}
super.onPageFinished(view, url);
}
}

关于Facebook Like 按钮的 Android WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5108088/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com