我正试图得到我的朋友的生日,那些已经安装了我的样本应用程序。下面是我的代码。
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
。
然而仍然可以获得一些数据,如果:
- 你想要过生日的朋友也是你的应用程序的用户
- 朋友提供了
user_birthday
权限(注意你需要得到FB的批准)
您可以通过在me/friends
中的fields
键中添加"birthday"来实现此目的:
me/friends?fields=id,name,birthday
或者,您可以在用户注册时简单地将用户数据保存到您自己的数据库中,然后稍后检索它,这将得到完全相同的结果。
查看更新日志:https://developers.facebook.com/docs/apps/changelog
所有的friends_*权限已被删除
这包括friends_birthday
,所以不可能得到一个朋友的生日了