如何与Facebook Opengraph for android共享logo + immutable text?

时间:2017-08-15 14:22:22

标签: android facebook-android-sdk facebook-share

我正在将facebook SDK集成到我的应用程序中,但我对共享系统感到有些困惑。

我的应用程序是educationnal,我希望我的用户可以吹嘘“我在测试n°xx上有100/100”并在Facebook上分享,就像你可以用Runtastic一样。

对于那些不了解它的人来说,这是Runtastic股票的样子(例子是法语,但你明白了):

runtastic shares example

由于我的应用程序不是游戏,因此无法使用Open Graph Stories(没有教育类型),而且自定义开放图形故事现已弃用,因此没有任何对象相关,我无法创建自己的对象。

知道了,如何创建一个看起来像这样的ShareDialog,旁边有一个大徽标和一个不可修改的文本,链接到一个网站?

Sharing documentation讲述了共享单个内容的所有内容,但如果您想将其与文本结合使用,则无法提供帮助。

最接近我想要的是将ShareLinkContent与我在Playstore上的应用程序的链接和引用一起使用。它可以解决这个问题,但它看起来更像是用户只是在共享一个链接(这是真的),而不是他吹嘘自己的成就。

我也可以将照片作为照片分享,并将吹嘘作为标题,但是徽标太大了,标题必须可以修改,所以每个人都可以告诉他得到100/100。

注意:法语中的文字表示“[此人]在3小时6分钟内终止了27.94公里的跑步,并以Runtastic app保存”。我希望我的应用程序显示“[此人]在2016年会话中获得100/120,使用MyAppName应用程序保存”。

NB2:我没有任何服务器,只有一个Playstore链接,一个Facebook应用程序和一个facebook页面

1 个答案:

答案 0 :(得分:0)

你去......

这是我的功能,它将创建一个标题为&的对象。描述,也是来自远程URL的图片(但你需要创建该图片的位图,因为我正在使用 Glide

private static void shareFacebook(Context context, Bitmap picture, String title, String videoURL, String description) {
    SharePhoto photo = new SharePhoto.Builder()
            .setBitmap(picture)
            .setCaption(context.getResources().getString(R.string.floh_site))
            .setUserGenerated(true)
            .build();

    ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
            .putString("og:type", "books.book")
            .putString("og:url", videoURL)
            .putString("og:title", title)
            .putString("og:description", description)
            .putPhoto("og:image", photo)
            .putString("books:isbn", title)
            .build();

    ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
            .setActionType("books.wants_to_read")
            .putObject("book", object)
            .build();

    ShareOpenGraphContent c = new ShareOpenGraphContent.Builder()
            .setPreviewPropertyName("book")
            .setAction(action)
            .build();

    ShareDialog.show(FlohApp.getTopActivity(), c);
}