【问题标题】:Share link and image on facebook在 Facebook 上分享链接和图片
【发布时间】:2015-11-04 21:21:06
【问题描述】:

因为FB,我把这个简单的问题变得复杂了。我尝试使用 facebook sdk 从 android 共享链接和图像。 以前有没有人玩过 ShareOpenGraphObject、ShareOpenGraphAction 和 ShareOpenGraphContent,facebook 文档很烂,根本没有例子。我正在等待示例。

谢谢

【问题讨论】:

  • 我个人没有。我相信很多人都愿意提供帮助,但你必须展示一些代码。
  • 我很确定 FB 文档已经足够好了。如果您需要帮助,您应该发布一些您迄今为止尝试过的代码。
  • 让我们发布一些代码然后:

标签: android facebook image hyperlink share


【解决方案1】:

它很简单,您可以找到许多示例以及在 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 文档很烂,我想创建一个内容并显示它,以便用户可以编辑。谢谢
【解决方案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 很烂

【讨论】:

    【解决方案3】:

    我认为通过使用 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,我必须分享一张本地图片,而不是来自链接的图片
    • 您可以使用sharePhoto类分享本地图片,该类在facebook sdk文档中指定。
    • 我知道我可以使用 sharePhoto,但我还需要在照片上附加链接和评论...你知道我该怎么做吗?
    • SharePhotoContent 类提供添加 sharephoto 和 ContentUrl 的选项。但是,我不确定它是否有效。
    • 不工作,内容网址仅适用于从网址上传图片,仅此而已
    【解决方案4】:

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

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

    是一种没有 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();
        }
    };
    

    这里的方法是与要加载的相应 Web url 共享一个链接,当从 FB 提要单击时,共享的图像是通过本机 facebook android 应用程序的 链接 或回退到 sdk 共享对话框是没有 facebook 应用程序是持久的。

    【讨论】:

      猜你喜欢
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多