削弱Facebook帖子的标题

时间:2015-08-19 04:13:38

标签: php facebook facebook-php-sdk

当我实现一个发布到Facebook的功能时,我遇到了问题。我需要在标题中添加/字符。不幸的是,如果那是在标题字符串中,那么在Facebook上没有显示斜杠之后的部分。如果我定义了foo.bar/username这样的标题,那么foo.bar将显示为标题。这是不可取的。我试图用\/来逃避它,在这种情况下,foo.bar\/username显示为标题。有没有显示包含斜杠的字符串作为标题?

编辑: 我将为您提供有关该问题的更多详细信息,因为它似乎在所有情况下都不可重复。我有这个代码,调用发布到墙:

if (fRequest::get("share") === "facebook") {
    $title = "Ask or tell me anything anonymously ";
    $uri = QM::$mainSiteName.User::current()->getUsername();
    $desc = "";
    $msg = "";
    $pic = QM::$mainSiteName . "images/facebook-share-my-link-200x200.png";
    $caption = $uri;
    $action_name = "Ask " . $_SESSION["username"] . " anything";
    $action_link = $uri;        
    App::CurrentUser()->postToFacebookWall($title, $uri, $desc, $msg, $pic, $caption, $action_name, $action_link);
}

上面的代码调用用户类的postToFacebookWall函数:

public function postToFacebookWall($title, $uri, $desc, $msg = null, $pic = null, $caption = null, $action_name = null, $action_link = null, $uid = 'me') {
    try {
        $data = array(
            'name' => $title,
            'link' => $uri,
            'description' => $desc            
        );

        if ($pic) {
            $data['picture'] = $pic;
        }

        if ($caption) {
            $data['caption'] = $caption;
        }

        if ($action_name) {
            $data['actions'] = json_encode(array('name' => $action_name, 'link' => $action_link));
        }

        Facebook\FacebookAccessor\FacebookAction::facebookActionFactory("post", array("url" => $uri, "params" => $data));
    } catch (Exception $e) {
        return false;
    }

    return true;
}

上面的代码触发了动作工厂:

public static function facebookActionFactory($actionKey, $params) {
    $element = new FacebookAction($actionKey, $params);
    switch ($actionKey) {
        case FacebookActionPrivilege::$ACTION_POST_KEY: return $element->post($params["params"]);
        case FacebookActionPrivilege::$ACTION_FIND_FRIENDS_KEY: return $element->findFriends($params["params"]);
        case FacebookActionPrivilege::$ACTION_PICTURE_KEY: return $element->getPicture($params["params"]);
    }
}

,反过来,触发post方法:

public function post($params) {
    if (($this->getIsPossible()) && (is_array($params))) {
        $postRequest = new FacebookRequest(FacebookActionPrivilege::getSession(), 'POST', '/me/feed', $params);
        $postResponse = $postRequest->execute();
        return $postResponse;
    }
}

最后两个方法是FacebookAction类的一部分。 post方法触发FacebookRequest SDK构造函数,发布消息。

注意,QM :: $ mainSiteName.User :: current() - &gt; getUsername()生成一个字符串,如"http://foo.bar/loremipsum",在Facebook帖子中,标题为:foo.bar < / p>

1 个答案:

答案 0 :(得分:0)

在进行了一些试验和错误会话后,我找到了解决方案。而不是

$caption = "http://foo.bar/loremipsum";

我正在使用

$caption = "foo.bar&nbsp;&frasl;loremipsum";

&frasl;是对/进行编码,因为结果在Facebook墙上没有显示,我需要一些空间,由&nbsp;

解决