如何使用android在facebook feed对话框中传递预定义的消息和链接参数

时间:2012-12-01 02:32:44

标签: java android facebook

我想在Facebook墙上发布带有链接的预定义消息,无需用户干预。我的意思是用户只需登录到Facebook,我的预定信息应该在用户的Facebook墙上发布链接。

以下是我的代码。

public class PostOnFacebookWall {
    public static void postOnWall(Facebook facebook , final Context context, final String placeName) {
        Bundle params = new Bundle();
        params.putString("message", placeName);
        facebook.dialog(context, "feed", params ,new DialogListener() {

            public void onFacebookError(FacebookError e) {
            }

            public void onError(DialogError e) {
            }

            public void onComplete(Bundle values) {
                Toast.makeText(context, placeName+" for today's hangout has been posted on your facebook wall. ", Toast.LENGTH_LONG).show();
            }

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

我看了很多关于我的问题的链接,如下所示

http://stackoverflow.com/questions/11316683/adding-content-to-facebook-feed-dialog-with-new-facebook-sdk-for-android

传递了所有参数,如“链接”,“描述”,“图像”等等。 有人说你必须传递所有参数。我只是想预先找到消息并链接到那些。

我的留言应该是“让我们在那里闲逛”,这里placeName应该是一个链接。 这个完整的消息我想从我的代码中传递。我不希望我的代码打开对话框,用户输入它的消息。

1 个答案:

答案 0 :(得分:1)

如果您需要将预定义的消息发布到用户的Facebook Wall,则不应使用facebook.dialog方法。

有关不应使用此内容的更多信息,请阅读此处发布的答案:https://stackoverflow.com/a/13507030/450534

话虽如此,为了得到你想要的结果,试试这段代码:

Bundle postStatusMessage = new Bundle();

// ADD THE STATUS MESSAGE TO THE BUNDLE
postStatusMessage.putString("message", "Let's hangout at " + placeName);
postStatusMessage.putString("link", "www.the_example_web_address.com");

Utility.mAsyncRunner.request("me/feed", postStatusMessage, "POST", new StatusUpdateListener(), null);

通过解析String response,您可以在此处查看来自Facebook API的响应:

private class StatusUpdateListener extends BaseRequestListener  {

    @Override
    public void onComplete(String response, Object state) {

}

此处需要注意的一点是,无法传递带有链接的message。要详细说明(因为之前的陈述可能听起来令人困惑),您不能在message标签中传递一个链接,该链接将由Facebook解析并显示在FB上的链接等帖子中。

要清楚地看到差异,请使用上面的代码发布状态更新,并查看它在Facebook上的显示效果。然后,在完成此操作后,从上面的代码中删除此postStatusMessage.putString("link", "www.the_example_web_address.com");,并在message标记中包含该链接,发布并查看其在Facebook上的显示效果。