繁体   English   中英

使用Android版Facebook SDK在Facebook时间线上发布图片

[英]Posting image on Facebook timeline using Facebook SDK for Android

我有一个Android应用程序,它将用户的状态消息发布到Facebook上她/他的时间轴上(请参见下面的消息片段,该代码段发布了问题),问题是我无法发布任何表情符号(如表情符号)。 我尝试将图像作为字节数组发送(有人建议在另一篇文章中)无济于事,图片被拒绝,如果我发布图片的URL,Facebook将插入URL而不是实际的图片。 有没有办法将图像发布为真实图片? 我正在使用适用于Android和Android Studio 2.1的Facebook SDK 4.11。 任何提示都将受到欢迎。 谢谢

这是代码:

postParams.putString("caption", getResources().getString(R.string.app_name)); // text to post
postParams.putString("message", msg);
postParams.putString("link", "https://www.terra7.net");

if (imgUrl != null) {

    //Bitmap bi = BitmapFactory.decodeResource(getResources(), imgId);
    //ByteArrayOutputStream baos = new ByteArrayOutputStream();
    //bi.compress(Bitmap.CompressFormat.PNG, 100, baos);
    //byte[] data = baos.toByteArray();

    //postParams.putByteArray("picture", data); // image to post
    postParams.putString("picture", imgUrl); // image to post
}

GraphRequest request = new GraphRequest(accessToken, "me/feed", postParams, HttpMethod.POST, new GraphRequest.Callback() {
    @Override
    public void onCompleted(GraphResponse response) {
        if (response.getError() != null) {
            Toast.makeText(MoodFragment.this.getContext(), response.getError().getErrorMessage(), Toast.LENGTH_LONG).show();
        }
    }
});
request.executeAsync();

试试下面的代码:

public void sharePhotoToFacebook() {

        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic);
        SharePhoto photo = new SharePhoto.Builder()
                .setBitmap(bitmap)
                .build();
        SharePhotoContent content = new SharePhotoContent.Builder()
                .addPhoto(photo)
                .build();
        ShareApi.share(content, new FacebookCallback<Sharer.Result>() {
            @Override
            public void onSuccess(Sharer.Result result) {
                Log.e("onSuccess ", "result " + result);
            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException error) {
                Log.e("onError ", "error " + error);
            }
        });
    }

为了使用上面的代码,您需要publish_actions权限,可以在下面的代码中使用get权限:

public void getPermission() {
        List<String> permissionNeeds = Arrays.asList("publish_actions");// - See more at: http://simpledeveloper.com/how-to-share-an-image-on-facebook-in-android/#sthash.v7b5g7GA.dpuf
        loginManager = LoginManager.getInstance();
        loginManager.logInWithPublishPermissions(this, permissionNeeds);
        loginManager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                sharePhotoToFacebook();
            }

            @Override
            public void onCancel() {
                System.out.println("onCancel");
            }

            @Override
            public void onError(FacebookException exception) {
                System.out.println("onError");
            }
        });
        // - See more at: http://simpledeveloper.com/how-to-share-an-image-on-facebook-in-android/#sthash.v7b5g7GA.dpuf


    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM