我想在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的对话框。
以下是输出..........
@pravin这是您的共享API使用后出现的错误
@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提前................
答案 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);
}
注意: - 在此代码中,它共享一个配额。如果有人得到其他答案,请发布输出。
输出: -
如果你得到这个问题的实际答案,请发帖。
感谢所有努力的用户.......
由于你的回答,我学到了很多东西.......
享受编码.........
答案 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故事:
当您使用分享对话框时,我将详细介绍如何使用分享对话框发布游戏分数。
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();
在上面的代码段中,密钥为Object Properties,game.achievement为Object Type。以下是game:points的文档。
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder() .setActionType("games.achieves") .putObject("game", object) .build();
您可以找到不同的ActionTypes
here。
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder() .setPreviewPropertyName("game") .setAction(action) .build();
代码中的所有对象和操作类型必须为小写。所有 属性名称需要名称空间。
show
上的ShareDialog
方法显示“共享”对话框。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也可以帮助您作为应用内容的常规分享