如何发布到Facebook facebook-sdk:4.0.0

ton*_*777 5 java android facebook

请帮忙

我将按钮贴到墙上的代码:

btnPostToWall.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        postToWall();
    }
});

public void postToWall() {
    // post on user's wall.
    facebook.dialog(this, "feed", new DialogListener() {

        @Override
        public void onFacebookError(FacebookError e) {
        }

        @Override
        public void onError(DialogError e) {
        }

        @Override
        public void onComplete(Bundle values) {
        }

        @Override
        public void onCancel() {
        }
    });

}
Run Code Online (Sandbox Code Playgroud)

但我有新的Faceboof android sdk 4.0.0和这个代码depreacated

怎么贴到新的图书馆?

我看了这个,但我不明白如何使用

Max*_*org 6

有关如何从Android SDK 4.0共享的官方Facebook文档位于:

https://developers.facebook.com/docs/sharing/android

该链接提供了如何通过调用Graph API进行共享或通过调用本机Facebook应用程序对话框进行共享的示例.

以下是我在自己的应用中实现共享对话框的方法:

在我添加的活动/片段的xml中 Button

  <Button
        android:layout_width="144dp"
        android:layout_height="144dp"
        android:id="@+id/shareFacebookButton"
        android:text=""
        android:background="@drawable/facebook_button"
        android:layout_gravity="center"
        android:layout_marginBottom="6dp"
        />
Run Code Online (Sandbox Code Playgroud)

然后在片段内:

Button shareButton = (Button)view.findViewById(R.id.shareFacebookButton);
shareDialog = new ShareDialog(this);
callbackManager = CallbackManager.Factory.create();
shareDialog.registerCallback(callbackManager, new 

FacebookCallback<Sharer.Result>() {
    @Override
    public void onSuccess(Sharer.Result result) {}

    @Override
    public void onCancel() {}

    @Override
    public void onError(FacebookException error) {}
});

shareButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
         if (ShareDialog.canShow(ShareLinkContent.class)) {
             ShareLinkContent linkContent = new ShareLinkContent.Builder()
                .setContentTitle("Hello Facebook")
                .setContentDescription("The 'Hello Facebook' sample  showcases simple Facebook integration")

             .setContentUrl(Uri.parse("http://developers.facebook.com/android"))
                            .build();

         shareDialog.show(linkContent);
          }
     }});
Run Code Online (Sandbox Code Playgroud)

现在,当有人点击按钮时,他们将会像您期望的那样得到Facebook对话框.

希望这可以帮助.


Gra*_*lov 5

也许它不是你想要的解决方案,但我正在使用它.

Facebook Android SDK 4有ShareApi分享您内容的课程.这个类有静态方法share():

public static void share(
            final ShareContent shareContent,
            final FacebookCallback<Sharer.Result> callback) {
        new ShareApi(shareContent)
                .share(callback);
    }
Run Code Online (Sandbox Code Playgroud)

和非静态私有String message.所以,当你想分享一些东西时(例如,

ShareApi api = new ShareApi(content);
api.setMessage("My message");
api.share(content, new FacebookCallback<Sharer.Result>() ...)
Run Code Online (Sandbox Code Playgroud)

)将创建ShareApiwith的新实例,message = null并且不会添加您的消息.

解决方案:

  1. ShareApi如果您使用Facebook SDK作为外部库,请打开课程或从Github https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/share/ShareApi复制此课程. java 如果您正在使用Maven存储库.

  2. 更改此代码:

    public static void share(
        final ShareContent shareContent,
        final FacebookCallback<Sharer.Result> callback) {
    new ShareApi(shareContent)
            .share(callback);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    到这一个:

    public static void share(final String message,
        final ShareContent shareContent,
        final FacebookCallback<Sharer.Result> callback) {
    new ShareApi(message, shareContent)
            .share(callback);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 更改此代码:

    public ShareApi(final ShareContent shareContent) {
        this.shareContent = shareContent;
        this.graphNode = DEFAULT_GRAPH_NODE;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    到这一个:

    public ShareApi(String message, final ShareContent shareContent) {
        this.message = message;
        this.shareContent = shareContent;
        this.graphNode = DEFAULT_GRAPH_NODE;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使用您更改的ShareApi课程来分享您的内容:

    ShareApi.share("My message", content, new FacebookCallback<Sharer.Result>() {
    
            @Override
            public void onSuccess(Sharer.Result result) {
                if (AppConfig.DEBUG) {
                    Log.d(TAG, "SUCCESS");
                }
            }
    
            @Override
            public void onCancel() {
                if (AppConfig.DEBUG) {
                    Log.d(TAG, "CANCELLED");
                }
            }
    
            @Override
            public void onError(FacebookException error) {
                if (AppConfig.DEBUG) {
                    Log.d(TAG, error.toString());
                }
            }
        });
    
    Run Code Online (Sandbox Code Playgroud)

如果您只想共享文本,可以使用下面的代码作为content对象:

ShareLinkContent content = new ShareLinkContent.Builder()
                .build();
Run Code Online (Sandbox Code Playgroud)

您已经阅读过本手册https://developers.facebook.com/docs/sharing/android,可以ShareContent在帖子中添加不同的内容.使用Facebook Github存储库中的示例来更好地理解新SDK.

PS当然,您应该拥有有效的访问令牌和publish_actions权限.