在Facebook上分享得分android

时间:2016-08-04 05:24:59

标签: android facebook android-intent

我想在Facebook上分享我的游戏分数。我检查了很多链接,每个帖子的人都说使用 INTENT POSTING 不可能。如果我们使用的意图比我们可以仅分享链接

如果我们必须在Facebook上分享,那么我们必须使用FaceBook SDK

我还怀疑所有问题和答案都是在2014年之前发布的 。 2014年之后是否有任何新事物

我的实际问题是,是否可以使用 Intent 在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 for Android应用,然后在发布帖子后将控制权返回给您的应用。如果未安装Facebook应用程序,它将自动回退到基于Web的对话框。

以下是输出..........

output

@pravin这是您的共享API使用后出现的错误

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提前................

6 个答案:

答案 0 :(得分:7)

经过长时间的搜索,我发现这在我的项目中对我有用,直到实际答案将会到来..........

            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

如果你得到这个问题的实际答案,请发帖。

感谢所有努力的用户.......

由于你的回答,我学到了很多东西.......

享受编码.........

答案 1 :(得分:3)

评分API

如果您只想分享分数,可以使用Scores 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

如果您想要在游戏中发布成就并使用分数奖励玩家来完成这些成就,请使用Achievements API。您必须使用Open Graph Stories在Facebook上发布您的游戏成就。在代表人们发布故事之前,您必须提交它们以供审核。阅读this link以获取更多信息。有两种方法可以发布Open Graph故事:

  1. 使用“共享”对话框
  2. 使用您自己的自定义界面
  3. 当您使用分享对话框时,我将详细介绍如何使用分享对话框发布游戏分数。

    1. 创建对象类型为game.achievement的对象,并在该对象上设置属性。
    2. 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();
      

      在上面的代码段中,密钥为Object Properties,game.achievement为Object Type。以下是game:points的文档。

      1. 然后创建一个动作并将对象链接到动作。
      2. ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
            .setActionType("games.achieves")
            .putObject("game", object)
            .build();
        

        您可以找到不同的ActionTypes here

        1. 最后,创建内容模型以表示Open Graph故事。
        2. ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
              .setPreviewPropertyName("game")
              .setAction(action)
              .build();
          
               

          代码中的所有对象和操作类型必须为小写。所有   属性名称需要名称空间。

          1. 使用show上的ShareDialog方法显示“共享”对话框。
          2.   

            ShareDialog.show(activityOrFragment,content);

            <强>要点: -

              

            Scores API和Achievements API可以轻松构建社交   排行榜,坚持球员得分并奖励球员的成就   以社交和跨平台的形式。使用Scores API,您可以   存储并重置玩家的高分并撤回他们的列表   朋友的分数填充排行榜。使用Achievements API,   您可以定义玩家可以完成的自定义成就列表   在你的游戏中,以及每个可以获得的分数值   成就。

            注意: -

              

            得分API 成就API 仅适用于应用   分类为游戏

                 

            因为这些API允许开发人员编写有关玩家游戏的信息   说明图形API,它们都需要publish_actions权限,   这是受登录审查。检索分数和成就   有关玩家朋友的信息,包括玩家和他们的朋友   朋友需要授予user_friends权限。

            希望这能为您和其他用户提供有关Facebook游戏集成的足够信息。

答案 2 :(得分:1)

试试以下代码段,

在下面的任何地方打电话

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

注意:请务必初始化Facebook SDK。

希望这可以帮助您,让我知道查询。

答案 3 :(得分:0)

我相信Facebook SDK使用后台活动进行实际数据传输,但您仍然需要自己制作活动,其布局以及here上的示例向您展示如何创建自己的共享和登录工具

答案 4 :(得分:0)

你必须使用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);
    }

答案 5 :(得分:0)

嗯,有 3 你应该做的事情:
1)将您的应用分类为Facebook开发者上的游戏 2)使用Achievements API和Scores API
3) Facebook for Developers正式回答了您的问题。请参阅链接https://developers.facebook.com/docs/games/services/scores-achievements

  

[可选]


如果您想要通过用户从您的应用中了解常规分享而不是此链接,Facebook SharingAddit也可以帮助您作为应用内容的常规分享