Nick Baker(webtechnick)のCakePHP / Facebookプラグインを使用しています。これは素晴らしく、うまく機能しますが、答えに近づくことすらできないような質問があります。
共有ボタンの使用をバイパスして、アクションを介して直接共有するにはどうすればよいですか?
たとえば、自分のサイトから投稿を作成すると、その投稿は必要に応じてDBに追加されます。また、アクションを通じて、ログインしているユーザーのTwitterアカウントにも投稿が送信されます。このアクションでFBアカウントとの共有を処理するにはどうすればよいですか(接続はすでに確立されています)。私は誰もが明らかにアクションで直接$this->Facebook-> share()を試してみると思う最初のことを試しましたが、役に立たなかった...
どんな考えや解決策も大いに役立つでしょう...
回答後の更新
ヘルプspooneyのためのThx。あなたは私が言えることから100%スポットであるため、私はあなたの答えに投票しました。JSSDKを読み込んでいます。
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ウォールへの投稿は、実際にはサイトの説教からのものではなく、ユーザー自身のウォールへの投稿であり、基本的に「ladala.comに投稿しました。でチェックしてください。」
だから今、私は投稿を送信するアクションを通してFB.uiを実行する方法を理解する必要がある時点にいます。