2013-03-15 121 views
1

我使用Android SDK v3.0爲Facebook發送請求給朋友使用我的應用程序。我使用我在here上看到的代碼打開Facebook的對話應用程序並向用戶的朋友發送請求。Facebook SDK v3.0請求對話框不發送應用程序請求

使用以下代碼顯示併發送請求後。我現在收到「請求已發送」信息,但請求永遠不會發送。

private void sendRequestDialog() { 
    Bundle params = new Bundle(); 
    params.putString("message", "MESSAGE"); 
    params.putString("app_id", "APPID"); 

    WebDialog requestsDialog = (
     new WebDialog.RequestsDialogBuilder(LoginActivity.this, 
      Session.getActiveSession(), 
      params)) 
      .setOnCompleteListener(new OnCompleteListener() { 

       @Override 
       public void onComplete(Bundle values, 
        FacebookException error) { 
        if (error != null) { 
         if (error instanceof FacebookException) { 
          Toast.makeText(LoginActivity.this.getApplicationContext(), 
           "Request cancelled", 
           Toast.LENGTH_SHORT).show(); 
         } else { 
          Toast.makeText(LoginActivity.this.getApplicationContext(), 
           "Network Error", 
           Toast.LENGTH_SHORT).show(); 
         } 
        } else { 
         final String requestId = values.getString("request"); 
         if (requestId != null) { 
          Toast.makeText(LoginActivity.this.getApplicationContext(), 
           "Request sent", 
           Toast.LENGTH_SHORT).show(); 
         } else { 
          Toast.makeText(LoginActivity.this.getApplicationContext(), 
           "Request cancelled", 
           Toast.LENGTH_SHORT).show(); 
         } 
        } 
       } 

      }) 
      .build(); 
    requestsDialog.show(); 
} 

以下日誌從logcat的請求對話框的顯示過程中獲得:

03-15 17:18:51.944: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:18:53.759: V/chromium(2842): external/chromium/net/base/bandwidth_metrics.h:96: [0315/171853:INFO:bandwidth_metrics.h(96)] Bandwidth: 1500.13Kbps (avg 2275.13Kbps) 
03-15 17:18:54.124: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:18:58.019: W/dalvikvm(2842): disableGcForExternalAlloc: true 
03-15 17:18:58.629: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:18:58.684: W/dalvikvm(2842): disableGcForExternalAlloc: true 
03-15 17:18:59.314: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:18:59.369: W/dalvikvm(2842): disableGcForExternalAlloc: true 
03-15 17:18:59.949: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:18:59.954: W/dalvikvm(2842): disableGcForExternalAlloc: true 
03-15 17:19:00.534: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:19:00.539: W/dalvikvm(2842): disableGcForExternalAlloc: true 
03-15 17:19:01.329: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:19:03.459: W/dalvikvm(2842): disableGcForExternalAlloc: true 
03-15 17:19:03.984: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:19:04.019: W/dalvikvm(2842): disableGcForExternalAlloc: true 
03-15 17:19:04.189: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:19:06.269: W/dalvikvm(2842): disableGcForExternalAlloc: false 
03-15 17:19:10.869: I/NONPRIME(2842): <CallBackProxy> Send to WebViewClient. 

請點我在正確的方向...

回答

2

從這個Facebook的developers頁: 「用戶到用戶請求僅適用於畫布應用程序「

0

在Facebook開發人員帳戶的應用程序設置中添加畫布fr並在此之後添加以下代碼以發送應用請求。 如果活動與YourActivityName.this 如果片段取代getActivity()無需更換任何

Bundle params = new Bundle(); 
      params.putString("message", 
        "Join CConnect To feel Better Experience Of Meetings And Calls"); 

      WebDialog requestsDialog = (new WebDialog.RequestsDialogBuilder(
        getActivity(), Session.getActiveSession(), params)) 
        .setTheme(
          android.R.style.Theme_Translucent_NoTitleBar_Fullscreen)) 
        .setOnCompleteListener(new OnCompleteListener() { 

         @Override 
         public void onComplete(Bundle values, 
           FacebookException error) { 
          if (error != null) { 
           if (error instanceof FacebookOperationCanceledException) { 
            Toast.makeText(
              getActivity() 
                .getApplicationContext(), 
              "Request cancelled", 
              Toast.LENGTH_SHORT).show(); 
           } else { 
            Toast.makeText(
              getActivity() 
                .getApplicationContext(), 
              "Network Error", Toast.LENGTH_SHORT) 
              .show(); 
           } 
          } else { 
           final String requestId = values 
             .getString("request"); 
           if (requestId != null) { 
            Toast.makeText(
              getActivity() 
                .getApplicationContext(), 
              "Request sent", Toast.LENGTH_SHORT) 
              .show(); 
           } else { 
            Toast.makeText(
              getActivity() 
                .getApplicationContext(), 
              "Request cancelled", 
              Toast.LENGTH_SHORT).show(); 
           } 
          } 
         } 

        }).build(); 
      requestsDialog.show(); 
+0

是存在的,當我添加Facebook畫布平臺應設置任何特殊設置?我只是把一些東西放在Canvas網址上,沒什麼更多。它不適用於我 – 2014-11-08 16:20:18

+0

首先,您必須將應用程序發送給Facebook,然後才能訪問您的朋友列表,然後使用標記的朋友api與url分享您的應用程序鏈接並標記您想要的那些朋友。可邀請的朋友api只適用於遊戲api。 – DeepakPanwar 2014-11-10 07:38:48

+0

這很混亂。 sendRequest對話框已經打開好友列表,我選擇我想要發送請求的朋友。所以我基本上已經訪問了我的朋友列表,我只是不能發送請求,而吐司「請求發送」出現。這是正常的嗎? – 2014-11-10 09:06:46

相關問題