android如何显示我所有的facebook好友并邀请一起玩

android how to display all my facebook friends and invite to play

我是 Facebook 集成新手 在我的应用程序中,我通过 Facebook 成功登录,

但是,我想,

  1. 使用邀请按钮在列表中显示我所有的 Facebook 好友

  2. Invite 邀请发送给他们后

我发现很多,但我不理解 Facebook 文档, 所以任何人请给我任何相关的例子,

非常感谢。

希望this对您有所帮助。
如果你想显示你所有的朋友,那么你必须合并两个 API

  1. 没有使用您的应用程序的朋友可以通过调用 Graph API invitable_friends here 是代码的文档。
    (invitable_friends 仅当您的 FBApp 分类游戏)
  2. 时才能获取
  3. 可以通过调用 Graph API friends
  4. 获取已经在使用您的应用程序的朋友

在这里,如果你想检索invitable_friends那么你必须login with permission

发送邀请的最后一件事是documentation

我放了一些重要的部分以显示 facebook 朋友正在关注。有关更多信息和您必须参考的任何问题,

https://developers.facebook.com/

https://developers.facebook.com/docs/games/unity/unity-tutorial

https://github.com/fbsamples/web-friend-smash-v1

https://github.com/fbsamples/android-friend-smash-v2

以下为显示fb好友列表的主要部分(未安装游戏的) 在列表中显示 Facebook 好友:

在您的按钮 onClick 上调用以下函数:

      Session session = Session.getActiveSession();
      if (session == null || !session.isOpened()) {
            return;
      }
      List<String> permissions = session.getPermissions();

      if (!permissions.contains("user_friends")) {

            askForFriendsForPlayPermission(session);

        } else {
            loadFriendsFromFacebook(new FriendsLoadedCallback() {

                @Override
                public void afterFriendsLoaded() {
                    // startGame();
                    close_button_value = 11;
                    img_close_button.setVisibility(View.VISIBLE);
                }

            });

        }

askForFriendsForPlayPermission(...) : 此函数有助于获得好友许可,如果您按是,则它会显示 fb 好友列表,如下所示:

    private void askForFriendsForPlayPermission(final Session session) {
    // user has already said no once this session.
    if (application.hasDeniedFriendPermission()) {
    } else {
        new AlertDialog.Builder(HomeActivity.this)
                .setPositiveButton(R.string.dialog_yes, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        // User hit OK. Request Facebook friends
                        // permission.
                          requestFriendsPermission(AUTH_FRIENDS_PLAY_ACTIVITY_CODE);
                    }
                }).setNegativeButton(R.string.dialog_no, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        // User hit cancel. Keep track of deny so
                        // that we
                        // only ask once per session
                        // and then just play the game.
                        application.setHasDeniedFriendPermission(true);

                    }
                }).setTitle(R.string.with_friends_dialog_title).setMessage(R.string.with_friends_dialog_message)
                .show();
    }
}

获得 user_friends 许可 - 调用 :

    private void requestFriendsPermission(int requestCode) {
    // --//--Log.d("Permiision", "Requesting friends permissions.");
    Session.NewPermissionsRequest newFriendsPermissionsRequest = new Session.NewPermissionsRequest(this,
            "user_friends").setRequestCode(requestCode);
    Session.getActiveSession().requestNewReadPermissions(newFriendsPermissionsRequest);

}

加载 facebook 好友:

   private void loadFriendsFromFacebook(final FriendsLoadedCallback callback) {
   final Session session = Session.getActiveSession();
   RequestBatch requestBatch = new RequestBatch();
   Request invitableFriendsRequest = Request.newGraphPathRequest(session, "/me/invitable_friends",
            new Request.Callback() {

                @Override
                public void onCompleted(Response response) {

                    FacebookRequestError error = response.getError();
                    if (error != null) {
                        Log.e(CricoApplication.TAG, error.toString());
                        // handleError(error, true);
                    } else if (session == Session.getActiveSession()) {
                        if (response != null) {
                            // Get the result
                            GraphObject graphObject = response.getGraphObject();
                            JSONArray dataArray = (JSONArray) graphObject.getProperty("data");

                            List<JSONObject> invitableFriends = new ArrayList<JSONObject>();
                            if (dataArray.length() > 0) {
                                // Ensure the user has at least one friend
                                // ...
                                // fb_friends = new ArrayList<String>();
                                list_fb_friends = new ArrayList<HashMap<String, String>>();
                                for (int i = 0; i < dataArray.length(); i++) {
                                    invitableFriends.add(dataArray.optJSONObject(i));
                                    try {
                                        JSONObject json = dataArray.getJSONObject(i);
                                        String str_id = json.getString(TAG_ID);
                                        String str_first_name = json.getString(TAG_FIRST_NAME);

                                        JSONObject picture_obj = json.getJSONObject(TAG_PICTURE);
                                        JSONObject data_obj = picture_obj.getJSONObject(TAG_DATA);
                                        // String str_is_silhouette =
                                        // data_obj.getString(TAG_IS_SILHOUETTE);
                                        String str_url = data_obj.getString(TAG_URL);

   // put fb id and friends name in map and add to list view 
                                        map_fb_friends = new HashMap<String, String>();
                                        map_fb_friends.put("str_id", str_id);
                                        map_fb_friends.put("str_first_name", str_first_name);
                                        map_fb_friends.put("str_url", str_url);
                                        list_fb_friends.add(map_fb_friends);
                                        fb_friends.add(str_id);

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


LazyAdapter_fb_friends adapter = new LazyAdapter_fb_friends(HomeActivity.this,
                                        list_fb_friends);
Your_list_view.setAdapter(adapter);
                            }

                            application.setInvitableFriends(invitableFriends);
                        }
                    }
                }

            });
    Bundle invitableParams = new Bundle();
    invitableParams.putString("fields", "id,first_name,picture");
    invitableFriendsRequest.setParameters(invitableParams);
    requestBatch.add(invitableFriendsRequest);

    // Get the user's list of friends.
    // This only returns friends who have installed the game.
    Request friendsRequest = Request.newMyFriendsRequest(session, new Request.GraphUserListCallback() {

        @Override
        public void onCompleted(List<GraphUser> users, Response response) {
            FacebookRequestError error = response.getError();
            if (error != null) {
                Log.e(CricoApplication.TAG, error.toString());
                // handleError(error, true);
            } else if (session == Session.getActiveSession()) {
                // Set the friends attribute
                application.setFriends(users);
                callback.afterFriendsLoaded();
            }
        }
    });

您可以使用 facebook-id 来邀请特定的朋友。