【问题标题】:Facebook SDK v3.0 Request Dialog not sending application requestFacebook SDK v3.0 请求对话框不发送应用程序请求
【发布时间】:2013-03-15 12:39:23
【问题描述】:

我正在使用适用于 Facebook 的 Android SDK v3.0 向朋友发送使用我的应用程序的请求。我使用在here 上看到的代码打开 Facebook 的 Dialog 应用并向用户的朋友发出请求。

使用以下代码显示并发送请求后。我现在收到“请求已发送”toast,但从未发送过请求。

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();
}

Request Dialog显示过程中从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.

请指点我正确的方向...

【问题讨论】:

    标签: android facebook


    【解决方案1】:

    来自此 Facebook developers 页面: "用户对用户请求仅适用于 Canvas 应用"

    【讨论】:

      【解决方案2】:

      在 facebook 开发者帐户的应用程序设置中添加一个画布框架,然后添加以下代码以发送应用程序请求。 如果在活动中将 getActivity() 替换为 YourActivityName.this 如果在片段中不需要替换任何东西

      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();
      

      【讨论】:

      • 添加 Facebook 画布平台时有什么特殊设置需要设置吗?我只是在 Canvas URL 上放了一些东西,仅此而已。它不适合我
      • 首先您必须将应用程序发送到 facebook,然后您将可以访问您的朋友列表,然后使用可标记朋友 api 与 url 共享您的应用程序链接并标记您想要的朋友.邀请好友 api 仅适用于游戏 api。
      • 这令人困惑。 sendRequest 对话框已经打开了朋友列表,我可以选择要向其发送请求的朋友。所以我基本上已经访问了我的朋友列表,当吐司“请求已发送”出现时,我无法发送请求。这正常吗?
      • yes request send 表示请求已发送,您可以在您发送请求的用户的个人资料中看到它。只需在 facebook 的设置中添加画布框架。但这用于游戏应用程序,因为它将作为画布重定向 url 只需添加虚拟 url(比如您的网站 url)。并再次检查 app request ,这只是为了检查 app req 是否工作正常。但是如果你想要这个功能,那么除了游戏应用之外,这是不可能的,你只能标记你想要看到你的应用故事的朋友。
      • 这是否意味着对于应用程序(不是游戏)来说,从 facebook 邀请好友是不可能的?我创建了画布框架(当我可以在设置中添加其他平台时),但是如果我发送请求,那么即使请求到达它也会链接到画布而不是我指定的任意 URL?那么究竟如何才能制作“邀请朋友”功能呢? :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      相关资源
      最近更新 更多