Как различить действия «тег» и «пост на стене» в Facebook API - PullRequest
3 голосов
/ 23 августа 2011

Я пишу приложение для Facebook.Но у меня проблема в том, что действия «тег» и «разместить на другой стене» имеют одинаковый формат.

Например, если сообщения А на стене Б:

"from": {
        "name": "A",
        "id": "123456"
     },
     "to": {
        "data": [
           {
              "name": "B",
              "id": "123456789"
           }  
        ]
     },

иесли A теги B, то получается одно и то же.

Как я могу различить их?

Ответы [ 2 ]

1 голос
/ 05 января 2012

Я боролся с этим некоторое время сегодня.В итоге я проверил, содержится ли первый пользователь в массиве «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 устанавливается только в том случае, если это «пост на другой стене».

Надеюсь, это кому-нибудь поможет, я знаю, что это старый вопрос.

0 голосов
/ 24 августа 2011

Ищите «действия», которые существуют только для сообщений на стене, а не для сообщений с тегами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...