私は現在、Facebook ウォールに自動的に投稿するアプリケーションに取り組んでいます。このタイプのアプリケーションについて話しているすべてのブログと記事に目を通しました。やっとこの結果にたどり着きました。まず、ユーザーを認証し、以下の JavaScript コードに示すように、必要なアクセス許可を付与する必要があります。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Title</title>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
$(document).ready(function(){
var appId = "xxxxxxxxxxxxx";
var redirectUrl = "http://www.mydomain.com";
if (0 <= window.location.href.indexOf ("error_reason"))
{
$(document.body).append ("<p>Authorization denied!</p>");
return;
}
window.fbAsyncInit = function(){
FB.init({
appId : appId,
status : true,
cookie : true,
oauth : true,
channel: true,
channelURL: "http://www.mydomain.com/channel/"
});
FB.getLoginStatus (onCheckLoginStatus);
};
(function(d)
{
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
function onCheckLoginStatus (response)
{
if (response.status != "connected")
{
top.location.href = "https://www.facebook.com/dialog/oauth?client_id=" + appId + "&redirect_uri=" + encodeURIComponent (redirectUrl) + "&scope=publish_stream,email,user_birthday,publish_actions,offline_access";
}
else
{
// Start the application (this is just demo code)! ///////////////////////////////////
$(document.body).append ("<p>Authorized!</p>");
FB.api('/me', function (response) {
$(document.body).append ("<pre>" + JSON.stringify (response, null, "\t") + "</pre>");
});
//////////////////////////////////////////////////////////////////////////////////////
}
}
});
</script>
</body>
</html>
ユーザーのセッションが正常に認証され、彼が自分に代わって投稿するための私のアクセス許可要求を受け入れた後、あるサイトから別のサイトに移動するために 2 週間以上かけて作業したコードの最も難しい部分になります。しかし、それは役に立たない。
投稿を公開する次のコードを見つけましたが、現在ログインしているユーザーのウォールにのみ:
<script type="text/javascript">
function updateStatusViaJavascriptAPICalling(){
var status = document.getElementById('status').value;
FB.api('/me/feed', 'post', { message: status }, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Status updated Successfully');
}
});
}
それは魅力のように機能しますが、/me/feed
別の Facebook uid に変更すると、このアプリケーションとして他のユーザーに公開することが機能していないと表示されます。しかし、アプリアクセストークンとユーザーアクセストークンを入れようとしましたが、変更post
しPHP feed dialog
ても無駄でした。
この仕事を達成するためにPHPまたはJavaScriptのすべてのコードを試しましたが、残念ながら何も機能しませんでした. 特に、Facebook がアプリケーション開発者が友人のウォールに投稿することを禁止した後は。
必要なのは、ユーザーがオフラインであっても、ユーザーに代わってウォールに自動的に投稿することだけです。どうやってやるの?