Facebook Open Graph - 图像的自定义链接 - Android

时间:2014-04-10 15:42:46

标签: android facebook facebook-graph-api

我的应用程序非常以图像为中心,并希望允许用户在Facebook帖子上共享应用程序生成的图像。我理解"用户生成"只能与用户/相机拍摄的照片一起使用,因此不能选择。正确的吗?

由于我无法指定用户生成,我想要:

  1. 设置供稿图片上的链接,以便打开相册中的图片,而不是默认的og:url。

    • 此链接默认为打开的图形对象中指定的og:url。

    • 我仍然需要帖子中除了图片以外的所有其他og:url链接指向网站页面。

                       -OR-
      
  2. 在描述中(或Feed帖子中的其他位置)放置一个href链接,打开相册中的图像。

    • 除非我弄错了,否则在帖子/故事中似乎不允许使用HTML href标签。有没有办法在自定义故事的标题中执行此操作?
  3. 我可以将图片上传到应用专辑中,并获取相册中图片的网址(也使用"无故事"这样它就不会创建交)。

    我正在尝试做什么?

    如何更好地控制Facebook Feed帖子中设置的链接?

    编辑: 关于"用户生成"来自facebook docs: "用户生成的照片操作功能只能在照片是原始照片并由具有实际照相机的用户拍摄时使用。"

    我不想生成两个故事。理想情况下,我想要一个故事,其中包含可以点击的图像链接到应用相册中的原始完整尺寸图像。故事的其余部分分享了有关图像的一些细节(desc。等)。所以我想,在某种程度上,我正在寻找相机/照片要求的解决方法。

    我不介意标准故事布局(带有标题,说明/标题的较小图片),但只想将该图像链接到用户应用程序相册中的图像。

    编辑: 我意识到开放图形故事不是这里的方式。相反,我只是简单地使用Graph API。 (https://developers.facebook.com/docs/graph-api/reference/user/photos/)这允许我在用户评论中发布链接以及照片。对于任何感兴趣的人:

    public static void doImagePost(final Bitmap _sideBySide, String _comments) {
    
        Bundle parameters = new Bundle();
        parameters.putParcelable("image", _sideBySide);
    
        String message;
        if(_comments != null)
        {
    
            if(!_comments.isEmpty())
            {
                message = _comments + '\n' + '\n' + JSBridge.getURL();
            } else {
                message = JSBridge.getURL();  
            }
        } else {
            message = JSBridge.getURL();
        }
    //Plain Http://blahblahblah.com/foobar/whatever gets turned into a link in the message field
        parameters.putString("message", message);
    
        Bitmap redSideBySide = EHelper.reduceImageSize(_sideBySide, (int)4E6);
    
        Session session = Session.getActiveSession();
        if(session == null) {
            requestPublish(MODE_PHOTO, redSideBySide, _comments);
            return;
        } else {
            if(!session.isOpened())
            {
                requestPublish(MODE_PHOTO, redSideBySide, _comments);
                return;
            }
        }
    
    //Here is the Graph API request.
        Request imagePostRequest = new Request(Session.getActiveSession(), "me/photos" , parameters, HttpMethod.POST, new Request.Callback() {
            @Override
            public void onCompleted(Response response) {
                if(response.getError() == null)
                {
                    Toast.makeText(m_Context, "Post image success", Toast.LENGTH_SHORT).show();
                    //m_Images = null;
                    dismissProgressDlg();
                } else {
                    Toast.makeText(m_Context, "Error posting image to facebook: " + response.getError().getErrorMessage(), Toast.LENGTH_SHORT).show();
                    Log.e(DEBUG_TAG, "Error posting image to facebook: " + response.getError().getErrorMessage());
                    dismissProgressDlg();
                }
            }
        });
    
        showProgressDialog("Posting to Facebook...");
        imagePostRequest.executeAsync();
    
    }
    

0 个答案:

没有答案