День рождения пользователя Facebook с помощью графика запроса Android?
Это то, что я делаю, чтобы узнать подробности пользователя. Я могу получить FbId, имя пользователя и имя пользователя, я тоже хочу получить дату рождения пользователя. Пожалуйста, проверьте код ниже Спасибо заранее:-
GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse response) {
// Application code
if (AccessToken.getCurrentAccessToken() != null) {
if (user != null) {
Log4Android.e(FaceBookLogin.this, user.toString());
// Log.e("onCompleted ", " 1= > " + new Gson().toJson(user));
facebookUser = new Gson().fromJson(user.toString(), FacebookUser.class);
try {
// Log.e("onCompleted ", " 2= > " + new Gson().toJson(user));
Log.e("onCompleted ", " 22= > " + new Gson().toJson(facebookUser));
if (facebookUser.getEmail() != null || !facebookUser.getEmail().equals("")) {
checkUserStatus(context, facebookUser.getId());
} else {
UtilitySingleton.getInstance(context).ShowToast(R.string.email_error);
}
} catch (Exception e) {
e.printStackTrace();
facebookUser = getUsableData(response);
UtilitySingleton.getInstance(context).ShowToast(R.string.email_error);
}
}
}
}
});
Bundle parameters = new Bundle();
// parameters.putString("fields", "id,name,email,first_name,last_name");
parameters.putString("fields", "id,name,email,gender,birthday,first_name,last_name");
request.setParameters(parameters);
request.executeAsync();
3 ответа
Решение
Какие разрешения вы запрашиваете? получение дня рождения пользователя требует разрешения: "user_birthday".
Это решило мою проблему:-
String BIRTHDATE = "user_birthday";
public static final String[] FACEBOOK_PERMISSIONS = {ValueKeys.PUBLIC_PROFILE, ValueKeys.EMAIL, BIRTHDATE};
LoginManager.getInstance().logInWithReadPermissions((Activity) context, Arrays.asList(FACEBOOK_PERMISSIONS));
Чтобы получить разрешение, зайдите на свою панель управления Facebook> обзор приложения> начните отправку> и выберите user_birthday
Вы можете сделать что-то по этим строкам кода -
if (AccessToken.getCurrentAccessToken() != null) {
GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse response) {
if (response != null && response.getJSONObject() != null) {
try {
String birthDate = response.getJSONObject().getString("birthday");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields","id,name,email,gender,birthday,first_name,last_name");
request.setParameters(parameters);
request.executeAsync();
}
И вы всегда должны проверять токен доступа перед отправкой GraphRequest.