扩展larasap / fb post方法

时间:2018-09-07 11:47:05

标签: laravel facebook-graph-api facebook-php-sdk

我正在尝试从此程序包扩展方法的功能: https://github.com/toolkito/laravel-social-auto-posting

因为我的控制器的用法是如此简单,而且其他软件包甚至对于像我需要实现的基本操作来说也很麻烦!

目标:-在fb页面上发布文本,其中一些用户标签已经将“赞”添加到同一页面上。

所以我从这个电话开始:

SendTo::Facebook(
 ‘link’,
 [
 ‘link’ => ‘https://github.com/toolkito/laravel-social-auto-posting',
 ‘message’ => ‘Laravel social auto posting’
 ]
);

如果我只剪切链接部分,则消息部分可以是我的帖子文字,并且所有工作都很容易。 如果我尝试在用户的“邮件”部分添加带有标记的标签:

@[userId]

那是行不通的,标记部分被切掉,仅显示文本: 如果我发送'text'=>'some text @[mineuserid] more text'' 唯一

  

“一些文本,更多文本”

显示在墙上。

所以我开始复制和扩展方法。 如果我从fb文档中很好地理解了,我可以使用字段tags标记用户,但甚至需要指定字段places(在这种情况下,如果我很好地了解页面的ID)

因此,我开始探索软件包,并尝试通过mods发送软件包的链接:

public static function Facebook($type, $data)
    {
        switch ($type) {
            case 'link':
                $message = isset($data['message']) ? $data['message'] : '';
                $result = FacebookApi::sendLink($data['link'], $data['message']);
                break;

            case 'postolo':
                $message = isset($data['message']) ? $data['message'] :'';
                $tags =isset($data['tags']) ? $data['tags'] : '';
                $places =isset($data['places']) ? $data['places'] : '';

                $result = FacebookApi::sendPostolo( $message, $tags,$places);
                break;

我的部分是“ postolo”

然后我找到了sendLink:

public static function sendLink($link, $message = '')
    {
        self::initialize();
        $data = compact('link', 'message');
        try {
            $response = self::$fb->post('/me/feed', $data, self::$page_access_token);
        } catch(Facebook\Exceptions\FacebookResponseException $e) {
            throw new \Exception('Graph returned an error: '.$e->getMessage());
        } catch(Facebook\Exceptions\FacebookSDKException $e) {
            throw new \Exception('Facebook SDK returned an error: '.$e->getMessage());
        }
        $graphNode = $response->getGraphNode();

        return $graphNode['id'];
    }

如果我愚蠢地复制它并使其适应我的需要,就像这样:

 public static function sendPostolo($link, $message = '',$tags='',$places='')
    {
        self::initialize();
        $data = compact( 'tags','message','places');
        try {
            $response = self::$fb->post('/me/feed', $data, self::$page_access_token);
        } catch(Facebook\Exceptions\FacebookResponseException $e) {
            throw new \Exception('Graph returned an error: '.$e->getMessage());
        } catch(Facebook\Exceptions\FacebookSDKException $e) {
            throw new \Exception('Facebook SDK returned an error: '.$e->getMessage());
        }
        $graphNode = $response->getGraphNode();

        return $graphNode['id'];
    }

但是最后,方法$ fb-> post()对我而言并不起作用,而只是发布了我数组中的第一个数据$ data = compact('tags','message','places');因此在这种情况下,“标签”不是标签,而是可预测的是纯文本...

这是fb包上的post():

 public function post($endpoint, array $params = [], $accessToken = null, $eTag = null, $graphVersion = null)
    {
        return $this->sendRequest(
            'POST',
            $endpoint,
            $params,
            $accessToken,
            $eTag,
            $graphVersion
        );
    }

0 个答案:

没有答案