【问题标题】:Send App request to all friends in Facebook using 'Requests Dialog' in Android使用 Android 中的“请求对话框”向 Facebook 中的所有朋友发送应用请求
【发布时间】:2013-01-16 12:44:08
【问题描述】:

我想知道如何从 Android 应用程序向我所有的 Facebook 朋友发送应用程序请求。我在图形 API 中尝试过。但是,无法完成。

https://graph.facebook.com/apprequests?ids=friend1,friend2&message='Hi'&method=post&access_token=ACCESS_TOKEN

我知道这是一个重复的问题。但是,还没有找到答案。 我在上面的 API 上遇到了这个错误。

"All users in param ids must have accepted TOS."

我希望有一种方法可以通过点击向所有手机上的朋友发送应用请求。请分享。

【问题讨论】:

  • 您是否有任何图片或示例您想在朋友的墙上发布哪种类型的应用请求。

标签: android facebook-graph-api facebook-app-requests facebook-friends facebook-invite-friends


【解决方案1】:

您收到的错误消息(“param ids 中的所有用户都必须接受 TOS”)是因为您试图将应用生成的请求发送给未连接到您的应用的用户。

请参阅developer docs here

通过请求对话框发送的请求和应用生成的请求不同,您不能使用应用生成的请求来邀请用户加入您的应用。

无法通过图形 API 发送 Facebook 应用程序请求。不过,您可以使用app requests java-script dialog 发送请求,您只需要在“to”属性中指定用户的 ID,如文档中所述。

示例函数:

<script>
  FB.init({ appId: '**appId**', status: true, cookie: true, xfbml : true });

  function sendRequest(to) {
    FB.ui({method: 'apprequests', to: to, message: 'You should learn more about this awesome site.', data: 'tracking information for the user'});
    return false;
  }
</script>

然后只需将每个图像的 onclick 连接到 onclick="return sendRequest('**friendId**');" 之类的东西

你也可以在javascript中调用这个函数:它会给你所有的朋友照片。还有一群目前正在使用同一应用程序的朋友。您可以向其中任何一个发送请求。

function sendRequestViaMultiFriendSelector() {
    FB.ui({
        method: 'apprequests',
        message: "You should learn more about this awesome site."
    });     
}

Facebook Friend Request - Error - 'All users in param ids must have accepted TOS'

【讨论】:

  • 我想从应用程序发送。
  • 那你只能发给安装了你应用的用户
【解决方案2】:

你在 developer.facebook.com 上看过“Hackbook”的演示吗?

您可以参考HACKBOOK APP REQUEST FROM HERE

您可以通过以下代码实现将应用请求只发布给一个朋友。

代码:

Bundle params = new Bundle();

            JSONObject attachment = new JSONObject();
            JSONObject properties = new JSONObject();
            JSONObject prop1 = new JSONObject();
            JSONObject prop2 = new JSONObject();
            JSONObject media = new JSONObject();
            JSONStringer actions = null;
            try {
                attachment.put("name", "YOUR_APP");
                attachment.put("href", "http://www.google.com/");
                attachment.put("description", "ANY_TEXT");
                media.put("type", "image");
                media.put("src", "IMAGE_LINK");
                media.put("href", "http://www.google.com/");
                attachment.put("media", new JSONArray().put(media));
                prop1.put("text", "www.google.com");
                prop1.put("href", "http://www.google.com");
                properties.put("Visit our website to download the app", prop1);
               /* prop2.put("href", "http://www.google.com");
                properties.put("iTunes Link      ", prop2);*/
                attachment.put("properties", properties);
                Log.d("FACEBOOK", attachment.toString());

                actions = new JSONStringer().object()
                            .key("name").value("APP_NAME")
                            .key("link").value("http://www.google.com/").endObject();

            } catch (JSONException e) {
                e.printStackTrace();
            }

            System.out.println("ACTIONS STRING: "+actions.toString());
            System.out.println("ATTACHMENT STRING: "+attachment.toString());

            params.putString("actions", actions.toString());
            params.putString("attachment", attachment.toString()); // Original
            params.putString("to", "YOUR_FRIEND_FACEBOOK_ID");
            Utility.mFacebook.dialog(getParent(), "stream.publish", params,new PostDialogListener());



 public class PostDialogListener extends BaseDialogListener {
    @Override
    public void onComplete(Bundle values) {
        final String postId = values.getString("post_id");
        if (postId != null) {
            Toast.makeText(getApplicationContext(), ""+getResources().getString(R.string.facebook_response_msg_posted), Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), ""+getResources().getString(R.string.facebook_response_msg_not_posted), Toast.LENGTH_SHORT).show();
        }
    }
}

如果您只想在一位朋友的墙上发布 Apprequest,上述代码非常适用。如果您想在所有人上发帖,那么您必须制作 asynckTask,它为所有朋友发布并在所有墙上发布应用请求。

更新

这里是the link in PHP,他们做了同样的工作来向所有 Facebook 朋友发送请求。

而且[这里明确解释3,它被 Facebook 阻止向超过 15-20 个朋友发送好友请求。

现在,您只需要一个选项即可,在 AsyncTask 中使用上述代码将好友请求一一发送给所有好友。

【讨论】:

  • 它将在朋友墙上发布有关该应用的信息。
  • 应用请求不能上墙,必须上用户通知或应用请求列表
  • 它将在通知中。
  • @Gunjan:这将是 DrawSomething 应用程序为用户的 Facebook 朋友提供的帖子。
  • 请查看我刚刚更新的答案中的“HACKBOOK APP REQUEST”链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多