0

私のサイトでは、FacebookのオープングラフAPIとJavaScriptSDKを使用しています。私の目標は、ユーザーが私のサイトに接続し、私のサイトで特定のアクションを実行した後、ユーザーのFacebookストリームにメッセージを公開することです。Facebookの接続機能は問題なく機能しています。接続中に、電子メール、publish_stream、offline_accessのアクセス許可を要求します。私がやろうとしていることに必要なのはこれだけだと思います。これで、ユーザーがfacebook connectを介して接続すると、Facebookアクセストークンとシークレットを取得してキャプチャしますが、それらをどうするかはわかりません。

FacebookのJavaScriptSDKに関する見苦しいドキュメントによると、私がやろうとしていることを実行するには、次のコードを使用するように指示されています。

var body = 'Reading Connect JS documentation';
FB.api('/me/feed', 'post', { message: body }, function(response) {
  if (!response || response.error) {
    alert('Error occured');
  } else {
    alert('Post ID: ' + response.id);
  }
});

私はそれをテストとして行っており、応答を警告する代わりに、JSON応答を文字列化してコンソールに書き込んでいます。ストリームの公開が失敗し、応答は次のようになると言えば十分です。

{"error":{"type":"OAuthException","message":"An active access token must be used to query information about the current user."}}

ユーザーがFacebook接続を介して自分のサイトに「接続」され、指定したすべてのアクセス許可を受け入れた場合、有効なアクセストークンがありませんか?アクセストークンは、API呼び出しに渡さなければならない別のパラメーターですか?

4

2 に答える 2

1

上記のコードは、publish_stream権限で機能しました。javascript apiがアクセストークンを受信する前に、コードが実行されていないことを確認してください。走る:

console.log(FB.getSession()) 

FB.api呼び出しのすぐ上にあり、access_tokenがあることを確認します。

于 2011-04-22T22:29:37.303 に答える
1

ページにこれらすべてがあることを確認してください。

<BODY>
    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script type="text/javascript">
    FB.init({
      appId  : APP_ID, // the app ID you get when you register your app in http://www.facebook.com/developers/
      status : true, // check login status
      cookie : true, // enable cookies to allow the server to access the session
      xfbml  : true  // parse XFBML
    });

    if (FB.getSession() != null) {
      var body = 'Reading Connect JS documentation';
      FB.api('/me/feed', 'post', { message: body }, function(response) {
        if (!response || response.error) {
          alert('Error occured');
        } else {
          alert('Post ID: ' + response.id);
        }
      });
    }
    </script>
于 2011-04-22T22:40:09.167 に答える