如何向Facebook好友发送应用邀请(非游戏应用)。

时间:2014-11-06 14:58:48

标签: android facebook facebook-graph-api

  1. 我列出了facebook好友并发送了应用邀请(来自facebook发送请求对话框)! 我的问题是我可以发送请求而不使用Facebook发送请求对话框,如果是,如何? 我的代码如下,如果我不提供(WebRequestDialog).setTo(“逗号分隔的朋友的ID”),那么我无法发送请求,但如果我提供朋友的ids然后facebook本地对话框发送请求打开并成功发送请求。
  2. facebookFriendsDetail是可标记的朋友列表,我从可标记的朋友api获得。

    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.我的应用程序不是游戏应用程序,我强行添加了一个画布框架,之后我能够发送应用程序请求,现在我的问题是如何重定向在这里工作,我想如果有人在Facebook打开此请求通知移动应用程序将其重定向到我的应用程序,如果安装,如果不将其重定向到Playstore链接。

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

2 个答案:

答案 0 :(得分:2)

事实上,Facebook API中存在关于网络邀请到非游戏画布应用的漏洞。 Facebook API更改日志从v 2.2到v 2.3表明打开请求对话框的apprequests功能现在仅限于游戏,非游戏应用程序应该使用App Invites。但是,App Invites仅适用于iOS和Android。 因此,目前,用户无法通过网络邀请朋友加入非游戏画布应用程序,除非使用发送对话框,这是一种糟糕的用户体验,实际上不应该用于此。 我已经向Facebook提交了一份错误报告,他们已经承认这是一个有效的错误。我们希望他们能尽快解决。

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

答案 1 :(得分:1)

taggable_friends用于标记朋友,而非用于邀请他们。您只会使用该标记来标记令牌,而不是用户ID,这可能就是它无效的原因。

对于邀请,有invitable_friends。请务必仔细阅读文档:

  

Invitable Friends API仅适用于归类为Games的应用,其中也有Canvas存在。此API在v1.0中不可用。它可以被手机游戏调用,只要它们也有Canvas存在。

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