2

だから、私はfb.apiを使用してユーザーの壁に投稿しようとしていますが、行き詰まっています。これが私のコードです:

<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=windows-1251">
<title>Example Of Posting To Wall Using Javascript Graph API</title>
<script type="text/javascript" src=""></script>
    </head>
    <body class="">
    //the facebook sdk include
    <div id="fb-root" class=" fb_reset">
    <script>
var APP_ID="myAppID";

window.fbAsyncInit = initFacebook;

function initFacebook()
{
    FB.init({
      appId  : APP_ID,
      status : true, // check login status
      cookie : false, // enable cookies to allow the server to access the session
      xfbml  : true  // parse XFBML
    });

    FB.getLoginStatus(onFacebookLoginStatus);
};

(function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
    }());
    //the login function
function facebookLogin()
{
    var loginUrl="http://www.facebook.com/dialog/oauth/?"+
        "scope=publish_stream&"+
        "client_id="+APP_ID+"&"+
        "redirect_uri="+document.location.href+"&"+
        "response_type=token";
    window.location=loginUrl;
}


//Callback function for FB.login
function onFacebookLoginStatus(response)
{
    if (response.status=="connected" && response.authResponse)
    {
        document.getElementById("txtEcho").innerHTML="Logged in.";

    }
    else
    {
        document.getElementById("txtEcho").innerHTML="Not logged in.";
    }

}


    //post to wall function
function postToWallUsingFBApi()
{
    var data=
    {
        caption: 'This is my wall post example',
        message: 'Posted using FB.api',
        link: 'http://wwww.permadi.com/blog/',
     }
    FB.api('/me/feed', 'post', data, onPostToWallCompleted);
}

    //the return function after posting to wall
function onPostToWallCompleted(response)
{
    if (response)
    {
        if (response.error)
        {
            document.getElementById("txtEcho").innerHTML=response.error.message;
        }
        else
        {
            if (response.id)
                document.getElementById("txtEcho").innerHTML="Posted as post_id "+response.id;
            else if (response.post_id)
                document.getElementById("txtEcho").innerHTML="Posted as post_id "+response.post_id;
            else
                document.getElementById("txtEcho").innerHTML="Unknown Error";
        }
    }
}



    </script>
    <input id="loginButton" type="button" value="Login To Facebook" onclick="javascript:facebookLogin();">
    <input id="postToWallWithFBApiPrompt" type="button" value="Post To Wall Using FB.api"          onclick="javascript:postToWallUsingFBApi();">
    <div id="txtEcho"><b></b></div>
    </body>
    </html>

ここでの問題は、次のエラーコードを受け取ることです。現在のユーザーに関する情報を照会するには、アクティブなアクセストークンを使用する必要があります。ログインボタンを使用してコードを取得しても、それはわかります。以前に取得したアクセストークンを関数postToWallUsingFBApi()に追加する可能性はありますか?また、/ me /をユーザーIDで変更して、ユーザーがログアウトしても投稿できるようにすることはできますか?

4

1 に答える 1

3

この方法でクライアント側のログインを行う場合は、後で自分でURLからアクセストークンを抽出する必要があります。https://developers.facebook.com/docs/howtos/login/client-side-without-js-sdkを参照してください。 /#step3

または、JS SDKからFB.loginメソッドを使用するだけです。少し簡単で、必要なものをすべて「箱から出して」処理できます– https://developers.facebook.com/docs/howtos/login/getting-started /#step4

于 2012-12-11T11:06:49.517 に答える