Диалоговое окно «Поделиться в Facebook» не открывается

По этой ссылке я установил SDK 3.2.1 и реализовал uiHelper , вместе с FacebookDialog следующим образом:

if (FacebookDialog.canPresentShareDialog(getApplicationContext(),
            FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {
        // Publish the post using the Share Dialog
        Toast.makeText(this, "if", Toast.LENGTH_LONG).show();
        FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(
                this).setLink("https://developers.facebook.com/android")
                .build();
        uiHelper.trackPendingDialogCall(shareDialog.present());

    } else {
        Toast.makeText(this, "else", Toast.LENGTH_LONG).show();
        // Fallback. For example, publish the post using the Feed Dialog
        publishFeedDialog();
    }

Для publishFeedDialog() у меня есть:

    private void publishFeedDialog() {
    Bundle params = new Bundle();
    params.putString("name", "Facebook SDK for Android");
    params.putString("caption",
            "Build great social apps and get more installs.");
    params.putString(
            "description",
            "The Facebook SDK for Android makes it easier and faster to develop Facebook integrated Android apps.");
    params.putString("link", "https://developers.facebook.com/android");
    params.putString("picture",
            "https://raw.github.com/fbsamples/ios-3.x-howtos/master/Images/iossdk_logo.png");

    WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(this,
            Session.getActiveSession(), params)).setOnCompleteListener(
            new OnCompleteListener() {

                @Override
                public void onComplete(Bundle values,
                        FacebookException error) {
                    if (error == null) {
                        // When the story is posted, echo the success
                        // and the post Id.
                        final String postId = values.getString("post_id");
                        if (postId != null) {
                            Toast.makeText(getApplicationContext(),
                                    "Posted story, id: " + postId,
                                    Toast.LENGTH_SHORT).show();
                        } else {
                            // User clicked the Cancel button
                            Toast.makeText(getApplicationContext(),
                                    "Publish cancelled", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    } else if (error instanceof FacebookOperationCanceledException) {
                        // User clicked the "x" button
                        Toast.makeText(getApplicationContext(),
                                "Publish cancelled", Toast.LENGTH_SHORT)
                                .show();
                    } else {
                        // Generic, ex: network error
                        Toast.makeText(getApplicationContext(),
                                "Error posting story", Toast.LENGTH_SHORT)
                                .show();
                    }
                }

            }).build();
    feedDialog.show();
}

Теперь FacebookDialog.canPresentShareDialog всегда будет ложным, даже если приложение Fb установлено на телефоне, а затем вызывается publishFeedDialog(). Но после этого приложение вылетает.

Каково решение для этого? Почему отображается обычный диалог facebook, когда приложение есть в моем телефоне? (Я использую модель Lenevo, если это поможет)


person Sarthak Majithia    schedule 07.01.2015    source источник
comment
Какая у вас версия приложения Facebook? canPresentShareDialog вернет true только для тех версий приложения FB, которые его поддерживают.   -  person Ming Li    schedule 07.01.2015
comment
Я только что проверил, это 2.2.1, а в плеймаркете указано, что текущая версия 24.X! Думаю, это должно решить проблему. Позвольте мне вернуться к вам позже. Спасибо.   -  person Sarthak Majithia    schedule 08.01.2015
comment
This works! В диалоговом окне появляется моя ссылка и описание, BUT когда я нажимаю кнопку "Поделиться", появляется уведомление facebook с текстом "Something went wrong, please try again"   -  person Sarthak Majithia    schedule 08.01.2015
comment
Я считаю, что проблема заключалась в том, что приложение не было опубликовано для широкой публики в Facebook. Видимо, есть куча обзоров, прежде чем это можно будет сделать. Я считаю, что на вопрос дан ответ, если вы любезно ответите на этот комментарий, я с радостью приму это как один. Кроме того, не могли бы вы сказать мне, необходим ли экран входа в систему, даже если требование просто заполняет поле состояния при нажатии кнопки «Поделиться».   -  person Sarthak Majithia    schedule 08.01.2015


Ответы (1)


Вам нужно более новое приложение FB, чтобы диалоговое окно общего доступа работало. Убедитесь, что вы загружаете последние версии!

Кроме того, нет, вам не нужно входить в систему, чтобы включить диалоговое окно общего доступа.

person Ming Li    schedule 08.01.2015
comment
Если вы видите мой предыдущий комментарий к этому вопросу, текущая проблема заключается в том, что Facebook хочет просмотреть мое приложение, прежде чем я смогу сделать его открытым для широкой публики и использовать эту функцию диалога обмена. Для этого одной из необходимых вещей является предоставление экрана входа в систему. - person Sarthak Majithia; 09.01.2015
comment
Вам не нужно одобрение для использования диалогового окна «Поделиться», это не один из вариантов отправки. - person Ming Li; 09.01.2015
comment
Как я могу заполнить поле состояния, когда я показываю пользователю диалоговое окно общего доступа? Я знаю, что ссылка установлена ​​с помощью .setLink() - person Sarthak Majithia; 10.01.2015
comment
Вы не можете заполнить поле статуса, пользователь ДОЛЖЕН ввести его самостоятельно. - person Ming Li; 12.01.2015