Я боролся с этим некоторое время сегодня.В итоге я проверил, содержится ли первый пользователь в массиве «To» в объекте «message_tags».Если пользователь-получатель также является пользователем с тегами, то текущая запись - это просто «тег», а не «пост на другой стене», как вы его указали.
Вот мой (грязный) код, который делает это в моем приложении:
JSONObject recipientData = story.getJSONObject("to");
JSONArray recipientArray = recipientData.getJSONArray("data");
JSONObject recipient = recipientArray.getJSONObject(0);
recipientName = recipient.getString("name");
String recipientId = recipient.getString("id");
// if the post's recipient is also a tagged user, then this is not a post to
// another user's wall, but rather a status update. Leave the recipient blank then.
if(story.has("message_tags")){
JSONObject tags = story.getJSONObject("message_tags");
for(int tagIdx = 0; tagIdx < tags.names().length() ; tagIdx++){
JSONArray tagArray = tags.getJSONArray(tags.names().getString(tagIdx));
String tagId = tagArray.getJSONObject(0).getString("id");
if(tagId.equals(recipientId)){
recipientName = "";
break;
}
}
}
В целях отображения я задаю в качестве имени получателя сообщения пустую строку, если сообщение действительнопросто обновление статуса с помеченным пользователем.receientName устанавливается только в том случае, если это «пост на другой стене».
Надеюсь, это кому-нибудь поможет, я знаю, что это старый вопрос.