【发布时间】:2012-05-04 16:50:22
【问题描述】:
我正在使用 Nick Baker 的 (webtechnick) CakePHP / Facebook 插件,它很棒而且效果很好,但是我有一个问题我似乎无法回答。
如何绕过分享按钮直接通过操作进行分享?
例如,我通过我的网站发布了一个帖子,该帖子按应有的方式添加到了数据库中,它还通过该操作向登录的用户 Twitter 帐户发送了一个帖子。我怎样才能让这个操作句柄将它分享到我的 FB 帐户(已经建立连接)。?我尝试了第一件事,我认为任何人显然都会在操作中直接尝试 $this->Facebook->share() ,也无济于事......
任何想法或解决方案都会有很大帮助......
回答后更新
谢谢你的帮助。我投票赞成你的答案,因为据我所知,你是 100% 正确的。我正在加载 JS SDK。
function init($options = null, $reload = true) {
if (empty($options)) {
$options = array();
}
if ($appId = FacebookInfo::getConfig('appId')) {
$session = json_encode($this->Session->read('FB.Session'));
if ($reload) {
$callback = "FB.Event.subscribe('auth.login',function(){window.location.reload()});";
} else {
$callback = "if(typeof(facebookReady)=='function'){facebookReady()}";
}
$callback .= "FB.Event.subscribe('auth.logout',function() {window.location = '/bastards/users/logout'});";
$init = '<div id="fb-root"></div>';
$init .= $this->Html->scriptBlock(
<<<JS
window.fbAsyncInit = function() {
FB.init({
appId : '{$appId}',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true // use Oauth
});
{$callback}
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/{$this->locale}/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
JS
, $options);
return $init;
} else {
return "<span class='error'>No Facebook configuration detected. Please add the facebook configuration file to your config folder.</span>";
}
}
我可以毫无问题地提取用户信息并处理所有这些。我已经完成了从我的网站到 FB 的发布,但这只是通过一个链接,使用 FB.ui...
<a href="#" onClick="publishStory();" class="sendFeed"><br><font style="color:#FFF; text-decoration:none;padding-left:27px;">post to wall</font></a><br>
<script>
function publishStory() {
FB.ui({
method: 'feed',
name: 'message name',
caption: 'message caption ',
description: 'description goes here',
link: 'the url current page',
picture: 'if you want to add an image'
},
function(response) {
console.log('publishStory response: ', response);
});
return false;
}
</script>
我已尝试将上面的代码替换为...
<a href="#" onClick="publishStory();" class="sendFeed"><br><font style="color:#FFF; text-decoration:none;padding-left:27px;">post to wall</font></a><br>
<script>
function publishStory() {
var body = 'Reading JS SDK documentation';
FB.api('/me/feed', 'post', { message: body }, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Post ID: ' + response.id);
}
});
}
</script>
但每次都会出错。
我还应该指出,用户 FB 墙上的帖子并不是真的来自网站 persay,而是用户在他们自己的墙上的帖子,基本上是说:“我在 ladala.com 上发了一个帖子,你应该去看看。”
所以现在我需要弄清楚如何通过提交帖子的操作来运行 FB.ui。
【问题讨论】:
-
我知道 JS SDK 支持这种功能。有可能使用它吗?
-
老实说痴情我不知道...你在说developers.facebook.com/docs/reference/javascript,对吗?
-
是的。使用 JS SDK 我可以调用 API,比如人们读过的文章,或者他们看过的视频,并且实现起来非常简单。您还可以提示用户将内容分享到他们的墙上 (developers.facebook.com/docs/reference/javascript/FB.ui) (developers.facebook.com/docs/reference/dialogs/feed)。我不完全确定这是否是您正在寻找的东西,或者在您的应用程序中实现是否有意义。
-
我不认为它可以通过分享按钮分享。一切正常。我可以通过我的站点执行所有标准 API 调用。我只是想绕过分享按钮,直接通过一个操作来运行它,除了他们在我们网站上发布的帖子之外,该操作需要零用户交互...
-
我的想法是您可以使用 FB.api 来执行此操作(developers.facebook.com/docs/reference/javascript/FB.api - 关于将故事发布到用户提要的部分)。
标签: facebook cakephp cakephp-1.3 sharing