-1

私は現在、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 に変更すると、このアプリケーションとして他のユーザーに公開することが機能していないと表示されます。しかし、アプリアクセストークンとユーザーアクセストークンを入れようとしましたが、変更postPHP feed dialogても無駄でした。

この仕事を達成するためにPHPまたはJavaScriptのすべてのコードを試しましたが、残念ながら何も機能しませんでした. 特に、Facebook がアプリケーション開発者が友人のウォールに投稿することを禁止した後は。

必要なのは、ユーザーがオフラインであっても、ユーザーに代わってウォールに自動的に投稿することだけです。どうやってやるの?

4

1 に答える 1

0

グラフ Api を介してユーザーの友人に投稿することはできません。これを実現する唯一の方法は、Javascript SDK フィード ダイアログを呼び出すことです。

アクセス トークンに関しては、短命のアクセス トークンを長命のアクセス トークン [60 日間有効] に延長できます。詳細を読む: http://developers.facebook.com/roadmap/offline-access-removal/

于 2013-02-11T06:58:55.993 に答える