【问题标题】:How can I post text on a friend's wall using the android facebook sdk如何使用 android facebook sdk 在朋友的墙上发布文字
【发布时间】:2011-09-22 18:16:16
【问题描述】:

我正在尝试使用 Android Facebook sdk 在用户朋友的墙上发帖。我已经使用类似的调用成功地发布到用户自己的新闻提要。使用我当前的代码,发给朋友的帖子可以顺利进行,只是消息是空白的。所有附件似乎都不起作用。它在朋友的墙上显示为一个完全空白的帖子。

这是我正在使用的代码:

private void publishChallengeToFriend() {
    String description = 
        "I challenge you to " + m_challenge.getTitle() + "!" + 
        " I finished this challenge with a score of " + getScore() + "."
        + " Can you beat that?";

    Bundle params = new Bundle();
    params.putString(Facebook.TOKEN, m_facebook.getAccessToken());
    params.putString("message", "");
    params.putString("name", "You have been challenged!");
    params.putString("caption", "Mobile Challenges");
    params.putString("description", description);
    try{
    m_facebook.request(getFriendId() + "/feed",params, "POST");
    }
    catch (Exception e){
        Log.d("TAG", "Facebook Error: " + e.getLocalizedMessage());
    }
}

我已经授权用户,并且我知道这是可行的,因为我可以发布到用户自己的提要。我知道https://github.com/facebook/facebook-android-sdk/issues/166 的github 问题#166。我已经尝试通过在我要传输的每个字符串上调用 getBytes() 来对每个附件使用 putByteArray()。这仍然在朋友的墙上显示为空白帖子。

我愿意使用任何方法在朋友的墙上发帖,不一定是 Facebook 请求。我也使用过 asyncfacebookrunner.request() 并且遇到了同样的问题。理想情况下,我想使用一个对话框来显示这一点,但我不知道如何将 dialog() 函数用于朋友帖子。但是,我将它用于状态更新而没有任何问题。

谢谢!

【问题讨论】:

    标签: android facebook facebook-graph-api


    【解决方案1】:

    您将消息作为描述,尝试将其移至消息参数,“描述”参数是您在帖子中放置的链接的描述,并将显示在链接下方。它不会显示在您的帖子上,因为您没有链接任何东西!您可以在下面看到我的方法:

    protected void postToWall(String userID){
        try {
            if (isSession()) {
                String response = mFacebook.request((userID == null) ? "me" : userID);
    
                Bundle params = new Bundle();
                params.putString("message", "put message here");
                params.putString("link", "http://mylink.com");    
                params.putString("caption", "{*actor*} just posted this!");
                params.putString("description", "description of my link.  Click the link to find out more.");
                params.putString("name", "Name of this link!");
                params.putString("picture", "http://mysite.com/picture.jpg");
    
                response = mFacebook.request(((userID == null) ? "me" : userID) + "/feed", params, "POST");       
    
                Log.d("Tests",response);
                if (response == null || response.equals("") || 
                        response.equals("false")) {
                    Log.v("Error", "Blank response");
                }
            } else {
                // no logged in, so relogin
                Log.d(TAG, "sessionNOTValid, relogin");
                mFacebook.authorize(this, PERMS, new LoginDialogListener());
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    

    这是结果,因此您可以看到帖子中不同参数的显示位置:

    【讨论】:

    • 谢谢!您肯定在做某事,我尝试将消息作为描述而不是描述标签,然后显示消息部分!但是,所有其他参数(名称、标题,甚至描述和链接,如果我定义一个)仍然没有显示。当我发布到用户自己的提要时,所有这些参数都有效。我想要的不仅仅是在朋友的墙上发布一个简单的消息。有什么想法吗?
    • 在我的答案中添加了更多代码以及墙上的图片,以便您查看它的外观
    • 这很有帮助!我完全按照你的做法做了,它奏效了!太奇怪了,我认为唯一改变的是我将附件添加到包中的顺序。
    • 将东西添加到捆绑包中的顺序并不重要,因为当 facebook 处理请求时,他们会搜索键然后提取值。但最重要的是你让它工作了!
    • 这就是我的想法......但这就是我改变的一切......奇怪!但是再次感谢您的所有帮助,您是对的,它正在工作!
    【解决方案2】:

    【讨论】:

    • 谢谢!在发布此内容之前,我已经多次查看该答案。我为我的应用程序使用了几乎相同的代码,但是,正如我在上面对答案的评论中所说,除了消息之外,没有任何参数显示。我想使用标题和说明来使它更好看。有什么想法吗?
    • 确保 getFriendId() 返回您所期望的,m_facebook 是什么?您是否尝试过使用异步运行器?
    • 是的,我知道 getFriendId() 正在工作,因为我遇到的空白帖子发给了正确的用户。我尝试过使用异步运行器,但得到了相同的结果:(。我猜我的附件没有正确发送......
    • 嗯..很奇怪..贴到自己的墙上也是空白吗?你试过吗?此外,这可能是一个愚蠢的建议,但请尝试按照我在回答中所做的顺序将字符串放入 bundle 中。另外,您是否尝试过不将消息留空?除了空字符串之外,还传递一些东西。
    • 谢谢!做到了,我将参数添加到包中的顺序完全不同!我不知道为什么会这样,但确实做到了。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多