朋友的生日使用脸书 API 2.0



我正试图得到我的朋友的生日,那些已经安装了我的样本应用程序。下面是我的代码。

 new Request(simpleFacebook.getSession(), "/" + id, null, HttpMethod.GET,
                                    new Request.Callback() {
                                        @Override
                                        public void onCompleted(Response response) {
                                            String rawResponse = response.getRawResponse();
                                            AppLog.showLog(TAG, "Friend response is " + rawResponse);
                                        }
                                    }
                            ).executeAsync();

但是在响应中没有任何"birthday"字段。

我还使用了simplefacebook库。使用下面的代码

PictureAttributes pictureAttributes = Attributes.createPictureAttributes();
                            pictureAttributes.setType(PictureAttributes.PictureType.SQUARE);
                            pictureAttributes.setWidth(250);
                            pictureAttributes.setHeight(250);
                            Profile.Properties properties = new Profile.Properties.Builder()
                                    .add(Profile.Properties.NAME)
                                    .add(Profile.Properties.BIRTHDAY)
                                    .add(Profile.Properties.PICTURE)
                                    .add(Profile.Properties.ID)
                                    .build();
                            simpleFacebook.getProfile(id, properties, new OnProfileListener() {
                                @Override
                                public void onComplete(Profile response) {
                                    String id = response.getId();
                                    String name = response.getName();
                                    String birthday = response.getBirthday();
                                    String pictureUrl = response.getPicture();
                                    AppLog.showLog(TAG, "Single friend Detail: " + id + "t" +
                                            name + "t" + birthday + "t" + pictureUrl);
                                    FbFriendsDao fbFriendsDao = new FbFriendsDao(LoginActivity.this);
                                    fbFriendsDao.openForWrite();
                                    fbFriendsDao.insertFriends(new FbFriendDto(id, name, birthday, pictureUrl));
                                }
                                @Override
                                public void onException(Throwable throwable) {
                                    super.onException(throwable);
                                }
                                @Override
                                public void onFail(String reason) {
                                    super.onFail(reason);
                                }
                                @Override
                                public void onThinking() {
                                    super.onThinking();
                                }
                            });

但是它在生日字段中给出null。请帮忙解决这个问题。

如@luschn所述,所有friends_*的权限已被删除,包括friends_birthday

然而仍然可以获得一些数据,如果:

  1. 你想要过生日的朋友也是你的应用程序的用户
  2. 朋友提供了user_birthday权限(注意你需要得到FB的批准)

您可以通过在me/friends中的fields键中添加"birthday"来实现此目的:

me/friends?fields=id,name,birthday

或者,您可以在用户注册时简单地将用户数据保存到您自己的数据库中,然后稍后检索它,这将得到完全相同的结果。

查看更新日志:https://developers.facebook.com/docs/apps/changelog

所有的friends_*权限已被删除

这包括friends_birthday,所以不可能得到一个朋友的生日了

最新更新