在 Facebook 上分享链接和图片

4
我有一个简单的问题因为FB而变得复杂。 我试图使用Facebook SDK从Android分享链接和图像。 有人使用过ShareOpenGraphObject,ShareOpenGraphAction和ShareOpenGraphContent吗?Facebook文档非常糟糕,没有任何示例。 我在等待示例。
谢谢

就我个人而言,我没有。我相信很多人都愿意帮忙,但你必须展示一些代码。 - Miriana Itani
1
我相信Facebook文档已经足够好了。如果您需要帮助,请发布一些您已尝试过的代码。 - Rohit5k2
让我们发布一些代码吧: - Miu Octavian
4个回答

2

让我们贴一些代码:

    ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
            .putString("og:type", "books.book")
            .putString("og:title", "A Game of Thrones")
            .putString("og:description", "In the frozen wastes to the north of Winterfell, sinister and supernatural forces are mustering.")
            .putString("books:isbn", "0-553-57340-3")
            .build();

    ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
            .setActionType("books.reads")
            .putObject("book", object)
            .putPhoto("image", photo)
            .build();

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

    shareDialog.show(this, content);

我的想法是不想用书籍,只想分享图片、链接和消息...我该怎么做?Facebook SDK很烂。


0

很简单,你可以找到许多例子,而且在Facebook SDK中你也可以找到相同的示例...

Bundle postParams = new Bundle();           
postParams.putString("link", url);
postParams.putString("picture", imgUrl);

    Request request = new Request(session, "me/feed", postParams, 
                    HttpMethod.POST, callback);

            RequestAsyncTask task = new RequestAsyncTask(request);
            task.execute();

非常不简单,fb文档很糟糕,我想创建一个内容并展示给用户进行编辑。谢谢。 - Miu Octavian

0

我认为通过使用Facebook SDK 4.0,您可以通过共享API分享内容。

例如:

public void share()
{
ShareLinkContent content=new ShareLinkContent.Builder()
.setContentTitle("Your Title")
.setContentUrl(Uri.parse("website link"))
.setImageUrl(Uri.parse("Image url"))
.build();

ShareApi.share(content, new FacebookCallback<Sharer.Result>(){
@Override
public void onSuccess(Result result){

}
@Override
public void onCancel(){

}
@Override
public void onError(FacebookException error){

}
});
}

可能有解决方案,但这不是一个 :D,我必须分享一张本地图片,而不是链接中的图片。 - Miu Octavian
您可以使用在Facebook SDK文档中指定的sharePhoto类来分享本地图片。 - userDroid
我知道我可以使用sharePhoto,但我还需要附加一个链接和评论到照片...你知道我该怎么做吗? - Miu Octavian
SharePhotoContent类提供了一个选项来添加分享的照片和内容URL。但是,我不确定它是否起作用。 - userDroid
无法工作,内容URL仅适用于从URL上传图片,没有其他功能。 - Miu Octavian

0

关于分享链接和图片,ShareDialog 提供了通过 Facebook 分享对话框分享内容的功能。

ShareLinkContent 描述要分享的链接内容。

这是一种不需要使用 Open Graph 方法的分享方式。

代码片段如下:

private ShareDialog shareDialog;
private boolean canPresentShareDialogWith;

shareDialog = new ShareDialog(this);

canPresentShareDialogWith = ShareDialog.canShow(ShareLinkContent.class);


ShareLinkContent linkContent = new ShareLinkContent.Builder().setContentTitle("Shared from " + "<APP NAME>")
                            .setContentDescription(
                                    "Question:" + data.getQuestion() + "\n"
                            // + "Asked by : "
                            // + data.getName() + "\n"
                            )
                            .setContentUrl(
                                    Uri.parse("<Website url>"))
                            .setImageUrl(Uri.parse(data.getPicUploadPath()))
                            .build();

                    if (canPresentShareDialogWith) {
                        shareDialog.show(linkContent);
                    } else if (profile != null && hasPublishPermission()) {
                        ShareApi.share(linkContent, shareCallback);
                    }


private FacebookCallback<Sharer.Result> shareCallback = new FacebookCallback<Sharer.Result>() {
    @Override
    public void onCancel() {
        Log.d("HelloFacebook", "Canceled");
    }

    @Override
    public void onError(FacebookException error) {
        Log.d("HelloFacebook", String.format("Error: %s", error.toString()));
        String title = getString(R.string.error);
        String alertMessage = error.getMessage();
        showResult(title, alertMessage);
    }

    @Override
    public void onSuccess(Sharer.Result result) {
        Log.d("HelloFacebook", "Success!");
        if (result.getPostId() != null) {
            String title = getString(R.string.success);
            String id = result.getPostId();
            String alertMessage = getString(
                    R.string.successfully_posted_post, id);
            showResult(title, alertMessage);
        }
    }

    private void showResult(String title, String alertMessage) {
        new AlertDialog.Builder(NewsfeedMain.this).setTitle(title)
                .setMessage(alertMessage)
                .setPositiveButton(R.string.ok, null).show();
    }
};

这里的方法是分享链接和相应的网址一起加载,当从FB动态消息中点击时,共享的图像是通过本机Facebook Android应用程序或回退到SDK共享对话框,如果没有Facebook应用程序存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接