我想在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应该是一个链接。 这个完整的消息我想从我的代码中传递。我不希望我的代码打开对话框,用户输入它的消息。
答案 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上的显示效果。