2

我是 Facebook SDK 的新手。我正在使用 Facebook SDK 3.0.1 在我的 Android 应用程序中添加 Facebook 登录。用于登录的 Facebook webDialog 弹出窗口。今天我发现了一个与昨天不同的奇怪行为。

输入帐户名和密码并在 webDialog 中按 Login 按钮后,最后在标题中显示“CURRENT GOALS”,要求添加朋友、输入位置等。正文显示“(YOUR_APP)想访问您的公开资料和朋友列表”。但是没有更多的按钮来授权或取消。在 Eclipse LogCat 中,来自 Session.StatusCallback() 的当前会话状态为 OPENING。结果,用户无法完成登录过程。

那么如何通过对话框成功完成登录过程呢?如果我按下左上角的关闭按钮或后退按钮,对话框就会关闭。会话状态将变为 CLOSED_LOGIN_FAILED。

昨天,同一个账号登录时,webDalog终于显示“你已经授权(YOURAPP)”,并出现一个Cancel和OK按钮。如果用户按下 OK,对话框关闭,Session.StatusCallback() 调用会话状态变为 OPENED。从而用户成功完成登录过程。

4

1 回答 1

2

我刚刚在以下位置找到并发布了一个解决方法:当前目标在网络视图中的 Facebook 授权期间隐藏 facebook ok 按钮

在 FaceBookSDK 中,我修改了 com/facebook/widget/WebDialog.java,这样一旦加载了 Web 对话框,它就会查找包含“当前目标”的块并将其隐藏(如果存在)。一旦你这样做了,按钮就会再次可见(至少它们对我来说是)。

在 com/facebook/widget/WebDialog.java 中:

private class DialogWebViewClient extends WebViewClient {

    // ... other methods ...

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        if (!isDetached) {
            spinner.dismiss();
        }
        /*
         * Once web view is fully loaded, set the contentFrameLayout background to be transparent
         * and make visible the 'x' image.
         */
        contentFrameLayout.setBackgroundColor(Color.TRANSPARENT);
        webView.setVisibility(View.VISIBLE);
        crossImageView.setVisibility(View.VISIBLE);

        // I don't know how to highlight in the code block
        // So I just add this extra long comment to make it obvious
        // Add a javascript call to hide that element, if it exists
        webView.loadUrl("javascript:try{ document.getElementById('nux-missions-bar').style.display='none'; } catch (e) {}");
        // End changes           
    }
于 2013-05-29T07:10:18.233 回答