2014-11-06 91 views
1
  1. 我已经列出了Facebook好友并发送了应用邀请(来自facebook发送请求对话框)! 我的问题是我可以发送请求而不使用Facebook发送请求对话框,如果是的话,怎么样? 我的代码如下,如果我不提供id(WebRequestDialog).setTo(“ID的朋友在逗号分隔”),然后我无法发送请求,但如果我提供朋友的ID然后Facebook本地对话框发送请求打开并成功发送请求。

facebookFriendsDetail是taggable朋友列表,我从taggable朋友api得到。如何发送应用程序邀请到Facebook好友(非游戏应用程序)。

Bundle params = new Bundle(); 
      StringBuilder sb = new StringBuilder(); 

      int USE_FRIEND_SIZE; 
      if(facebookFriendsDetail.size()>49) 
      { 
       USE_FRIEND_SIZE=49; 
      }else 
      { 
       USE_FRIEND_SIZE=facebookFriendsDetail.size(); 
      } 

      for (int i = 0; i < USE_FRIEND_SIZE; i++) { 

       if (i == 0) { 
        sb.append(facebookFriendsDetail.get(i).getId().toString()); 
       } else { 
        sb.append("," 
          + facebookFriendsDetail.get(i).getId().toString()); 
       } 

      } 
      // params.putString("to", sb.toString()); 
      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).setTo(sb.toString()) 
        .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(); 

2.my应用程序是不是游戏的应用程序,我强行加一件帆布框架,之后我能够给我的应用程序的要求,现在的问题是如何在这里做重定向的工作,我想如果有人打开这个请求通知在Facebook的移动应用程序,它将其重定向到我的应用程序,如果没有将其重定向到Playstore链接。

而对于网络应用程序,我希望它将其重定向到我在facebook中创建的应用程序页面。

回答

1

taggable_friends用于标记朋友,而不是邀请他们。您只会使用该标记标记令牌,而不是用户标识,这可能是为什么它不起作用。对于邀请,有invitable_friends。请务必仔细阅读文档:

“可邀请的朋友”API仅适用于划分为游戏的应用程序,该游戏也具有Canvas存在。该API在v1.0中不可用。只要他们也有Canvas存在,它可能会被手机游戏所调用。

顺便说一句,邀请不是游戏的Android应用程序中的朋友的推荐方式是例如发送/共享对话框。这部分文档可能会对您有所帮助:https://developers.facebook.com/docs/sharing/best-practices#sharingmobile

+0

是的,我是越来越在加标签的朋友API用户的加密ID,这就是为什么它是怎么了。有没有办法发送邀请没有发送共享对话框。因为我使用了发送共享对话框,所以我的客户端不需要这个。 – DeepakPanwar 2014-11-06 15:41:37

+0

你可以尝试invitable_friends,但它是写在游戏的文档中。您可以直接调用应用程序请求对话框,而无需使用任何用户标识。 – luschn 2014-11-06 16:05:42

2

实际上Facebook API中存在一个关于Web邀请到非游戏画布应用程序的漏洞。从API 2.2到V2.3的Facebook API更新日志声明,打开请求对话框的apprequests功能现在仅限于游戏,非游戏应用程序应该使用应用程序邀请。但是,应用邀请仅适用于iOS和Android。 目前,用户无法通过网络邀请朋友加入非游戏画布应用,除非使用Send Dialog,这是一种糟糕的用户体验,实际上不应该用于此目的。 我已经提交了一个与Facebook的错误报告,他们已经承认这是一个有效的错误。希望他们尽快修复。

https://developers.facebook.com/bugs/895531977178531

相关问题