ユーザーが Web ページで 3 つのカスタム グラフを開くアクションのいずれかを送信したかどうかを確認するために、次のメソッドを作成しました。
function checkOpenGraphHistory()
{
var actionList = new Array($('#fb1').attr("data-action"), $('#fb2').attr("data-action"), $('#fb3').attr("data-action"));
var nameList = new Array($('#fb1').attr("data-name"), $('#fb2').attr("data-name"), $('#fb3').attr("data-name"));
var idList = new Array('#fb1', '#fb2','#fb3');
var i = 0;
while(i < actionList.length)
{
FB.api('me/' + actionList[i] + '/?fields=id&object=' + location.href,
function (checkResponse)
{
--i; //the callbacks seem to be added to a queue instead of being processed per api request. Without this line, i always = actionList.length.
if (!checkResponse)
{
console.log('Check: Empty response checking: ' + checkResponse.error.message);
}
else if (checkResponse.error)
{
console.log('Check: ERROR checking: ' + checkResponse.error.message);
}
else if (checkResponse.data.length < 1)
{
console.log('Check: User has not ' + nameList[i] + ' this item before.');
}
else
{
console.log('Check: User ' + nameList[i] + 'ed item before, ID: ' + checkResponse.data[0].id + " actionList.length: " + actionList.length + "and i is: " + i);
}
} );
i++;
}
}
これは 3 つの HTTP リクエストを実行し、これが返す結果の精度は 100% ではありません。したがって、これをバッチ リクエスト、FQL リクエストに変換するか、API を介して Web ページ/オブジェクトをクエリしてすべてのアクションを返したい (現在 3 つのカスタム アクション、1 つは組み込みアクション、2 つはカスタム アクション)このWebページ/オブジェクトで実行された現在のユーザー。
このようなものは問題ありません:
https://graph.facebook.com/me/ {appNameSpace}:{action}/{object}
ただし、複数のアクションをチェックしたいのですが、今のところ 1 つのオブジェクトに対して少なくとも 3 つのアクションをチェックしたいと考えています。将来的にはさらに多くのアクションをチェックしたいと考えています。
次のパラメーターを使用してGraph API エクスプローラーを使用しようとしました。
me/?batch=[{"method":"GET", "relative_url":"me/myNamespace:myAction/", "object":"objectURL"}]
と
me/?batch=[{"method":"GET", "relative_url":"me/myNamespace:myAction/", "body":"url=objectURL"}]
ただし、これは、特定のオブジェクトの特定のアクションに関する情報だけでなく、この特定のオブジェクト/URL のカスタム アクションの複数のインスタンスを返します。ユーザーはオブジェクト (1 対 1 の関係) ごとに一意のアクションを 1 回しか実行できませんが、3 つのアクションすべてを 1 回実行できるため、特にユーザーが指定されたオブジェクトに対して指定されたアクションを実行したかどうかにかかわらず、アクションごとに 1 つの結果のみを返したいと考えています。 .