Поделиться счетом на Facebook android

Я хочу поделиться своим игровым счетом на facebook. Я проверил множество ссылок, и каждый пост сказал, что POSTING на facebook с помощью INTENT не возможно. Если мы используем намерение, поделиться только ссылкой.

Если нам нужно поделиться чем-то на facebook, мы должны использовать FaceBook SDK.

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

Мой фактический вопрос: возможно ли делиться оценкой на Facebook с помощью Намерения или мне нужно использовать Facebook SDK?

ниже - код намерения, который я использовал для моего приложения, которое не работает......

        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, message);
        startActivity(Intent.createChooser(intent, "Share on"));

а ниже - код FacebookSDK... и Проблема, в этом не отображается оценка в сообщении только изображение., и название и описание отсутствует.

  FacebookSdk.sdkInitialize(getApplicationContext());

            shareDialog = new ShareDialog(this);
             if (ShareDialog.canShow(ShareLinkContent.class)) {
                        linkContent = new ShareLinkContent.Builder()
                                .setContentTitle(title)
                                .setContentDescription(description)
                                .setContentUrl(Uri.parse(link)).
                                .setImageUrl(Uri.parse(imageLink)   
                                .build();

                        shareDialog.show(linkContent);
                    }

Я использовал ShareDialog, потому что

Диалоговое окно "Поделиться" переключается на собственное приложение для Facebook для Android, а затем возвращает управление вашему приложению после публикации публикации. Если приложение Facebook не установлено, оно автоматически будет отвисеть от веб-диалога.

Ниже представлен результат..........

output

@pravin это ошибка, возникающая после использования вашего API-интерфейса share

o

@Pravin это мой код вашего ответа на ваш ответ........

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();

        setContentView(R.layout.activity_facebook);

        Button mShare= (Button) findViewById(R.id.share);

        mShare.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
                        .putString("og:type", "game.achievement")
                        .putString("og:title", "Name of your game")
                        .putString("og:description", "description. You can share your score here")
                        .putString("game:points", "445")
                        .build();

                ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
                        .setActionType("games.achieves")
                        .putObject("game", object)
                        .build();




                if (ShareDialog.canShow(ShareLinkContent.class)) {
                    ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
                            .setPreviewPropertyName("game")
                            .setAction(action)
                            .build();

                    ShareDialog.show(Facebook.this, content);
                }
            }
        });
        shareDialog = new ShareDialog(this);

    }

Thanx заранее................

Ответ 1

После долгих поисков я нашел это как работу для меня в моем проекте до тех пор, пока не придет реальный ответ..........

            FacebookSdk.sdkInitialize(getApplicationContext());

            shareDialog = new ShareDialog(this);
            if (ShareDialog.canShow(ShareLinkContent.class)) {
                    linkContent = new ShareLinkContent.Builder()
                        .setQuote("Hi Guys I have completed Game 30 in 19 seconds  in this game")
                        .setImageUrl(Uri.parse("https://lh3.googleusercontent.com/jUej7mN6M6iulmuwmW6Mk28PrzXgl-Ebn-MpTmkmwtOfj5f0hvnuw8j0NEzK0GuKoDE=w300-rw"))
                        .setContentUrl(Uri.parse("https://play.google.com/store/apps/details?id=com.mobtraffiq.numbertap&hl=en"))
                        .build();

                    shareDialog.show(linkContent);
                }

ПРИМЕЧАНИЕ. - В этом коде его общая квота. Если кто-нибудь получит другой ответ, напишите сообщение с выходом.

Вывод: -

output

Пожалуйста, публикуйте ребята, если вы получите реальный ответ на этот вопрос....

Спасибо всем, кто прилагает усилия.

Я узнал много вещей из-за ваших ответов.......

пользоваться кодированием.........

Ответ 2

API оценок

Если вы просто хотите поделиться счетом, вы можете использовать API баллов (см. раздел Create or Update a Player Score). В приведенной ссылке есть очень небольшая и нечеткая информация, поэтому ниже фрагмент кода может работать для вас.

    Bundle param = new Bundle();
    param.putInt("score", 100);

    new GraphRequest(
    your_access_token,
    "/USER_ID/scores",
    param,
    HttpMethod.POST,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();

API достижений

Используйте API достижений, если вы хотите публиковать достижения в своей игре и вознаграждать игроков за баллы за выполнение этих достижений. Вы должны использовать Open Graph Stories опубликовать ваши игровые достижения на Facebook. Прежде чем публиковать рассказы от имени людей, вам придется представить их на рассмотрение. Прочтите эту ссылку для получения дополнительной информации. Существует два способа публикации истории Open Graph:

  • Использование диалогового окна "Общий доступ"
  • Использование собственного пользовательского интерфейса

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

  • Создайте объект с типом объекта game.achievement и установите свойства для этого объекта.
ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
        .putString("og:type", "game.achievement")
        .putString("title", "Title of the achievement type.")
        .putString("og:description", "description. You can share your score here")
        .putInt("game:points", Points in integer)
  .putString("og:url", "url of achievement type") 
  .putString("og:image", "image url") 
  .putString("fb:app_id", "The App ID that owns this achievement type") 
  .build();

В приведенном выше ключевом фрагменте кода Свойства объекта и game.achievement Тип объекта. Вот документация для игра: точки.

  1. Затем создайте действие и привяжите объект к действию.
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
    .setActionType("games.achieves")
    .putObject("game", object)
    .build();

Здесь вы можете найти различные ActionTypes здесь.

  1. Наконец, создайте модель контента, чтобы представить историю Open Graph.
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
    .setPreviewPropertyName("game")
    .setAction(action)
    .build();

Все объекты и типы действий в вашем коде должны быть строчными. Все именам свойств требуются пространства имен.

  1. Представьте диалог Share, используя метод show на ShareDialog.

ShareDialog.show(activityOrFragment, content);

Резюме: -

API API оценок и достижений позволяет легко создавать социальные лидеров, упорство игроков и награждение достижений игроков в социальном и межплатформенном формате. С помощью API баллов вы можете магазина и reset игрока с высоким счетом и отбросить список своих друзей, чтобы заполнить таблицу лидеров. С API-интерфейсом Achievements, вы можете определить список пользовательских достижений, которые игроки могут выполнить в вашей игре, а также ценность оценки, которую можно заработать с каждой достижение.

Примечание: -

Оба API оценок и API достижений доступны только для приложений которые классифицируются как Игры.

Поскольку эти API позволяют разработчикам писать информацию о игровой игре state в API Graph, для них требуются разрешения publish_actions, который подлежит регистрации. Чтобы получить результат и достижения информация о друзьях игроков, как игрока, так и их друзья должны предоставить разрешение user_friends.

Надеемся, что это предоставит вам и другим пользователям достаточную информацию об интеграции игры с Facebook.

Ответ 3

Просто попробуйте приведенный ниже фрагмент,

вызов, где вы хотите, как показано ниже

ShareDialog shareDialog;
FacebookSdk.sdkInitialize(mContext);
shareDialog = new ShareDialog(mContext);

shareScoreonFB("345"); // just pass your score here in string format. call this inside click listener.

// GLOBAL FUNCTION TO SHARE SCORE ON FB 
void shareScoreonFB(String score)
{
ShareLinkContent linkContent = new ShareLinkContent.Builder()
                    .setContentTitle("Your score is : "+score)
                    .setContentDescription("Any description that you needed")
                    .setContentUrl(Uri.parse("https://play.google.com/store/apps/details?id=com.mobtraffiq.numbertap&hl=en")).build();
            shareDialog.show(linkContent);
}

ПРИМЕЧАНИЕ. Убедитесь, что вы инициализируете SDK для Facebook.

Надеюсь, это поможет вам, сообщите мне о запросах.

Ответ 4

Я считаю, что в SDK Facebook используется фоновая активность для фактической передачи данных, но вам все равно нужно сделать свою собственную деятельность, ее макет и примеры на здесь покажут, как создать свои собственные инструменты совместного доступа и входа в систему

Ответ 5

Для этого вам нужно использовать SDK для Facebook, я думаю, что основная причина в безопасности.

Это простой фрагмент для примера обмена фотографиями (не связанный с вашим вопросом, но я думаю, вы знаете, что не можете сделать это с помощью Intent):

private void shareImage() {
        SharePhoto photo = new SharePhoto.Builder()
                .setBitmap(bmp)
                .setCaption("Simple puzzle")
                .build();

        SharePhotoContent content = new SharePhotoContent.Builder()
                .addPhoto(photo)
                .build();

        ShareApi.share(content, null);
    }

Ответ 6

Ну, есть 3 вещи, которые вы должны делать:
1) Категоризируйте свое приложение как игры на Facebook Developers
2) Используйте API API достижений и баллов

3) Facebook для разработчиков официально имеет ответ на ваш вопрос. См. Ссылку https://developers.facebook.com/docs/games/services/scores-achievements

[ДОПОЛНИТЕЛЬНО]


Если вы хотите изучить пользователей General Sharing из своего приложения пользователями, чем эта ссылка Facebook SharingAddit также может помочь вам в использовании общего доступа к содержимому вашего приложения