偵錯要求

圖形 API 偵錯模式

啟用「偵錯模式」後,圖形 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 物件,且包含下列欄位:

欄位 資料類型 說明

訊息

字串

訊息。

類型

字串

訊息嚴重等級。

連結

字串

[選用] 指向相關資訊的網址。

您也可以同時使用圖形 API 測試工具和「偵錯模式」。

判斷 API 要求使用的版本

當您在建置應用程式並發出圖形 API 要求時,判斷傳送回應的來源 API 版本可能會很有幫助。例如,若您在未指定版本的情況下發出呼叫,可能就不會知道是哪一個 API 版本發出回覆。

圖形 API 會在提供的要求標頭中包含名稱是 facebook-api-version 的所有回應,這個標頭會註明產生該回應的確切 API 版本。例如,使用 2.0 版發出要求的圖形 API 呼叫會產生以下 HTTP 標頭:

facebook-api-version:v2.0

您可以憑這個 facebook-api-version 標頭判斷傳回 API 呼叫的版本是否符合您所預期。

用於回報故障的偵錯資訊

回報圖形 API 的故障時,我們會在傳送的故障報告中附上一些其他的要求標頭,以利協助我們找到並重現您提出的問題。這些要求標頭為 X-FB-Debugx-fb-revX-FB-Trace-ID