2013-03-15 117 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

相关问题