私はjavascript sdkを使用しており、Facebookアカウントからパブリックポストを取得しようとしています。 これは、私がajaxを設定し、アクセストークンを取得するために使用するコードです(プログラムが自分のコンピュータ上で実行され、クライアントが公開されていないため、要求に私のアプリの秘密を使用します)。Facebookのポストリクエストが時々私にポストを取得し、ときどき(非常に奇妙な)
<head>
<title>Hopfully Facebook</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">//connect to ajax</script>
</head>
<body>
<script>
var token;
$.ajax({url: "https://graph.facebook.com/oauth/access_token?\client_id=APPID&client_secret=APPSECRET&grant_type=client_credentials",
success: function(result){
token = result.access_token; //in this var the access_token is stored
}); // end of the access_token request
</script>
これは、javascript sdkの設定と最初の投稿のmesasgeのリクエストです。
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'APPID',
xfbml : true,
version : 'v2.9'
}); //setting up the javascript sdk
var firstPostId;
FB.api(
('/AviBitterOfficial/posts?access_token='+token),
'GET',
{ "limit" : "1"},
function(response) {
console.log(response);
firstPostId = JSON.stringify(response.data[0].id);
firstPostId = firstPostId.substring(1, firstPostId.length -1);
FB.api( // the second call is in the first call's call back in order to bypass the async problem
('/'+ firstPostId+'?access_token='+token), // that the second call has initialized before the first call back
'GET',
{"fields":"message"},
function(response) {
alert(response.message);
}
);
}
);
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
プログラムを実行するたびに、同じキーが生成されますが、問題は少し変です。投稿のテキストを取得するためにトークンを使用すると、投稿のテキストを取得するときにコールを発信してテキストを表示することがありますが、「無効なOAuthアクセストークン」というエラーが表示されることがあります。コード109. これは、api呼び出しが成功し、両方の時間にエラーが発生し、トークンが同じで、それ以外のものもすべて同じであることの両方が原因で変です。 誰にも提案はありますか?
@luschm私はネットでのプログラミングに非常に新しいので、私は私がshoudn't代をやっているかもしれませんが、私はいくつかの記事とその情報を取得する必要があると私は私が持っていないと思います近い将来このようなことをしてください。私はapiが非同期であるために起こっている問題についてあなたが思っています、とにかく私が作る呼び出しの順序を制御することを知っていますか? –
ajax呼び出しをfbAsyncInitコールバック関数に置き、残りの部分を成功のコールバックで実行します。 – luschn
はあなたを行うことが私はそれのすべてのラウンドでの要求を行うループを持っていますが、理由は、APIのasynchronousityの、要求が間違った順序で実行されている私のコードの残りの部分に:)働いていた、どうもありがとうございましたそれを修正する方法を知っていますか? –