2

Facebook SDK は初めてです。Facebook SDK 3.0.1 を使用して、Android アプリに Facebook ログインを追加しています。ログイン用の Facebook webDialog ポップアップ。今日、昨日とは違う奇妙な行動を見つけました。

アカウント名とパスワードを入力し、webDialog で [ログイン] ボタンを押すと、最終的にヘッダーに「現在の目標」が表示され、友達の追加、場所の入力などが要求されます。リスト"。ただし、承認またはキャンセルするためのボタンはもうありません。Eclipse LogCat から、Session.StatusCallback() からの現在のセッション状態は OPENING です。その結果、ユーザーはログイン プロセスを完了できません。

では、ダイアログを渡してログイン プロセスを正常に完了するにはどうすればよいでしょうか。左上隅の閉じるボタンまたは戻るボタンを押すと、ダイアログが閉じます。セッション状態は CLOSED_LOGIN_FAILED になります。

昨日、同じアカウントでログインすると、webDalog は最終的に「あなたは既に承認されています (YOURAPP)」と表示し、[キャンセル] ボタンと [OK] ボタンが存在します。ユーザーが [OK] を押すと、ダイアログが閉じ、Session.StatusCallback() が呼び出してセッション状態が OPENED になります。したがって、ユーザーはログインプロセスを正常に完了します。

4

1 に答える 1

2

回避策を見つけて投稿しました:現在の目標は、WebビューでのFacebook認証中にFacebookのOKボタンを非表示にします

FaceBookSDK で com/facebook/widget/WebDialog.java を変更し、Web ダイアログが読み込まれると、「Current Goals」を含むブロックを探して (存在する場合) 非表示にするようにしました。それを行うと、ボタンが再び表示されます(少なくとも私にとってはそうでした)。

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 に答える