我正在尝试从此程序包扩展方法的功能: 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
);
}