Поделиться оценка на Facebook Android

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

Если мы должныподелиться чем-нибудь на фейсбуке чем мы должны использовать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 не установлено, оно автоматически откроется веб-диалоговым окном.

Ниже вывод ..........

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

@ Правин, это мой код твоего общего ответа ........

@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);

    }

Спасибо заранее ................

 Ragu Swaminathan12 авг. 2016 г., 13:24
Итак, вы хотите, чтобы оценка попала в общий доступ на Facebook, но оценка не отображается правильно? вы используете facebook SDK?
 Vickyexpert06 авг. 2016 г., 07:43
Насколько я понимаю, Facebook не разрешает только общий доступ к тексту, поэтому вам нужно поделиться маленьким изображением с текстом, и таким образом только вы можете поделиться счет
 sushildlh12 авг. 2016 г., 13:35
да, я использую FaceBookSDK. Это работает на вашей стороне? Я использовал пример книги, он работает, но игра не работает по этой ссылкеdevelopers.facebook.com/docs/sharing/opengraph/...
 sushildlh12 авг. 2016 г., 14:42
No0o0o0 Исключение .....
 Jay Rathod RJ12 авг. 2016 г., 14:39
@sushildlh Получаете ли вы другие исключения в вышеприведенном коде? Или это позволяет вам открыть диалоговое окно?
 Jay Rathod RJ12 авг. 2016 г., 14:45
@sushildlh Я спросил это, потому что, как правило,FacebookSdk.sdkInitialize (getApplicationContext ()); должно быть написано доsuper.onCreate не после этого.

Ответы на вопрос(6)

Просто попробуйте следующий фрагмент,

звоните куда хотите как ниже

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.

Надеюсь, это поможет вам, дайте мне знать по вопросам.

 sushildlh12 авг. 2016 г., 14:58
Посмотрите на вопрос я разместил изображение, которое приходит после использования вашего кода ............
 Ragu Swaminathan12 авг. 2016 г., 14:39
брат .. просто используйте приведенный выше фрагмент и просто прокомментируйте весь свой существующий код. Просто вставьте эту функцию в свою деятельность и вызовите ее внутри кнопки «Поделиться».
 sushildlh12 авг. 2016 г., 14:52
Идет NumberTap Изображение, о котором я написал после того, как отправил ваш код .......
 sushildlh12 авг. 2016 г., 14:02
используйте эту ссылку в вашем кодеplay.google.com/store/apps/... и, пожалуйста, скажите мне, название или описание идет или нет
 Ragu Swaminathan12 авг. 2016 г., 14:52
Хорошо. Я постараюсь вернуться к тебе.
 sushildlh12 авг. 2016 г., 14:34
братан, я уже сделал это, как только ты попробуешь это, ты понял, почему я отправил этот вопрос ....... Изображение, которое я отправил на вопрос, которое показывают после ввода твоего кода .......... Только изображение идет, название и описание отсутствует .....
 Ragu Swaminathan12 авг. 2016 г., 14:31
разместите вашу ссылку внутри contenturl. проверьте мой обновленный ответ.

Ну есть3 что вы должны сделать:
1) Разделите ваше приложение на категории «Игры на Facebook»
2) Используйте API Достижения и Счеты
3) Facebook для разработчиков официально имеет ответ на ваш вопрос. Пожалуйста, обратитесь к ссылкеhttps://developers.facebook.com/docs/games/services/scores-achievements

[ НЕОБЯЗАТЕЛЬНЫЙ ]


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

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

Это простой фрагмент для примера обмена фотографиями (не связанный с вашим вопросом, но я думаю, что вы знаете, что вы не можете не сделать это с помощью 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);
    }
 sushildlh05 авг. 2016 г., 12:34
Мне нужен только балл, это текст, который размещен на временной шкале ............
 VIRGINSTV05 авг. 2016 г., 12:38
Да, это единственный способ :)
 VIRGINSTV05 авг. 2016 г., 12:36
@sushildlh вот все, что вам нужно :)developers.facebook.com/docs/sharing/android

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

 AADProgramming05 авг. 2016 г., 06:59
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. -Из обзора
 Adam Ratzman05 авг. 2016 г., 09:56
@AADTechnical отметил на будущее
 AADProgramming05 авг. 2016 г., 10:35
на самом деле вы можете улучшить свой пост, включив необходимые части! Конечно, сделайте то же самое для ваших будущих сообщений тоже ...

Счеты API

Если вы просто хотите поделиться счетом, вы можете использоватьСчеты API(ЧитатьCreate or Update a Player's 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Тип объекта, Вот документация дляигровые очки.

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

Вы можете найти разныеActionTypes Вот.

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

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

Откройте диалоговое окно «Поделиться», используяshow метод наShareDialog.

ShareDialog.show (activityOrFragment, content);

Резюме:-

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

Заметка:-

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

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

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

 sushildlh12 авг. 2016 г., 07:53
пожалуйста, проверьте код, который он говорит.putString("game:points", Points in integer)  методputstring как бы он принял целое число ........
 sushildlh12 авг. 2016 г., 07:35
Я добавил код вашей реализации ..... пожалуйста, посмотрите ..... Пожалуйста, если возможно, пожалуйста, немного вашего кода относительно этой концепции ......
 sushildlh11 авг. 2016 г., 08:21
Я использовал ваш ресурс API, он дает мне ошибку, которую я написал на вопрос. Пожалуйста, посмотрите.
 Pravin Divraniya12 авг. 2016 г., 13:14
Внесение изменений в ShareOpenGraphObject.Builder () в разделе API достижений (раздел №1).
 sushildlh12 авг. 2016 г., 13:39
Это работает на вашей стороне ?? Я использовал пример книги, он работает, но игра не работает по этой ссылкеdevelopers.facebook.com/docs/sharing/opengraph/... и ошибка приходит так же, как я упоминал выше
 sushildlh12 авг. 2016 г., 14:47
вместо игры я ставлю достижение.putObject("achievement", object) а также.setPreviewPropertyName("achievement") это дает мне новоеошибка: - Достижение не было зарегистрировано для вашей заявки. Подскажите, пожалуйста, как мне зарегистрировать мою заявку.
 sushildlh12 авг. 2016 г., 08:29
грядет та же ошибка, о которой я написал в вопросе ..........
 sushildlh12 авг. 2016 г., 12:55
Пожалуйста, определите, что это за изменения. Очень сложно определить последний код и новый код
 sushildlh12 авг. 2016 г., 13:47
 Pravin Divraniya12 авг. 2016 г., 08:17
Используйте putInt для игры: точки вместо putString. Я обновил свой ответ. Пожалуйста, проверьте.
 Pravin Divraniya12 авг. 2016 г., 10:56
Обновил мой ответ проверки с этим.
 Pravin Divraniya11 авг. 2016 г., 15:50
Вставьте свой фрагмент кода. Похоже, вам, возможно, придется использовать API оценки в сочетании с API достижения. Также очень мало документации по этому поводу.
 Pravin Divraniya12 авг. 2016 г., 07:42
Игра: очки должны быть целыми. Если вы просто хотите опубликовать оценку, используйте API оценки и вместо USER_ID используйте идентификатор соответствующего пользователя. В своем ответе я разделяю оба (API баллов и API достижений) на разные разделы, поэтому воспользуйтесь им. Надеюсь, это поможет вам.
 sushildlh12 авг. 2016 г., 13:29
грядет та же ошибка, которую я разместил под вопросом

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

            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);
                }

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

Выход:-

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

Спасибо за всех пользователей, которые прилагают свои усилия .......

Я многому научился благодаря вашим ответам .......

наслаждайся кодированием .........

 sushildlh07 сент. 2017 г., 09:01
напишите ваш вопрос и дайте мне знать вашу проблему с полными журналами ошибок
 M. Dhaouadi07 сент. 2017 г., 16:50
Не могли бы вы взглянуть на:stackoverflow.com/questions/46080921/...

Ваш ответ на вопрос