デバッグモードを有効にすると、グラフAPIの応答に、リクエストに関連する潜在的な問題について説明する追加のフィールドが含まれることがあります。
デバッグモードを有効にするには、debugクエリ文字列パラメーターを使用します。以下はその例です。
curl -i -X GET \
"https://graph.facebook.com/{user-id}
?fields=friends
&debug=all
&access_token={your-access-token}"GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
// Insert your code here
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "friends");
parameters.putString("debug", "all");
request.setParameters(parameters);
request.executeAsync();FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:@"/{user-id}"
parameters:@{ @"fields": @"friends",@"debug": @"all",}
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
// Insert your code here
}];FB.api(
'/{user-id}',
'GET',
{"fields":"friends","debug":"all"},
function(response) {
// Insert your code here
}
);try {
// Returns a `FacebookFacebookResponse` object
$response = $fb->get(
'/{user-id}',
'{access-token}'
);
} catch(FacebookExceptionsFacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$graphNode = $response->getGraphNode();user_friendsアクセス許可が付与されていないと、次の応答が生成されます。
{
"data": [
],
"__debug__": {
"messages": [
{
"message": "Field friends is only accessible on User object, if user_friends permission is granted by the user",
"type": "warning"
},
{
"link": "https://developers.facebook.com/docs/apps/changelog#v2_0",
"message": "Only friends who have installed the app are returned in versions greater or equal to v2.0.",
"type": "info"
}
]
}
}debugパラメーター値は、「all」に設定することも、メッセージのtypeに応じて求められる最小重大度レベルに設定することもできます。
| デバッグパラメーター値 | 返される内容 |
|---|---|
all | 利用可能なすべてのデバッグメッセージ。 |
info | タイプがinfoおよびwarningのデバッグメッセージ。 |
warning | タイプがwarningのデバッグメッセージのみ。 |
デバッグ情報があれば、messages配列の__debug__キーで、JSONオブジェクトとして返されます。この配列のすべての要素は、次のフィールドを含んだJSONオブジェクトになります。
| フィールド | データ型 | 説明 |
|---|---|---|
message | 文字列 | メッセージ。 |
type | 文字列 | メッセージの重大度。 |
link | 文字列 | [任意] 関連情報を指すURL。 |
デバッグモードはグラフAPIエクスプローラでも使えます。
アプリのビルド中にグラフAPIリクエストを発行する場合、応答を返しているAPIバージョンを判別できると便利なことがあります。例えば、バージョンを指定せずに呼び出しを実行すると、応答しているAPIのバージョンが分からないかもしれません。
グラフAPIには、facebook-api-versionという、任意の応答で使えるリクエストヘッダーがあります。このヘッダーは、応答を生成したAPIの正確なバージョンを示します。例えば、v2.0のリクエストを生成するグラフAPI呼び出しでは、次のHTTPヘッダーが生成されます。
facebook-api-version:v2.0
このfacebook-api-versionヘッダーを使えば、API呼び出しで返される応答が予期したバージョンのものかどうかを判別できます。
グラフAPIでバグを報告する際には、バグレポートと一緒に、問題の特定や再現に役立つ追加のリクエストヘッダーを含めて送信してください。これらのリクエストヘッダーは、X-FB-Debug、x-fb-rev、X-FB-Trace-IDです。