Проблема с пометкой нескольких друзей на фотографии с помощью Facebook graph

#flash #facebook-graph-api #actionscript-3

#flash #facebook-graph-api #actionscript-3

Вопрос:

Я пытаюсь пометить нескольких друзей на фото, используя Graph API AS3 для моего приложения Flash. Если я использую значение статически, результат успешен и работает как шарм, но когда я пытаюсь ввести params.tags динамическое значение, которое я получаю из массива (заполняется с помощью флажка), это не удается.

Вот динамические и неудачные:

 var arrUserID:Array = new Array("1447615481","1052646429");

var len:Number = arrUserID.length;
var someStr:String = "";
for (var i:Number=0;i<len;i  ) {
    someStr  = arrUserID[i] "," Math.round(Math.random()*imgHolder.width) "," Math.round(Math.random()*imgHolder.height);
    if(i != len-1){
        someStr  = "||";
    }
}

var arr:Array = [];
arr = someStr.split("||");

var outputArr:Array = [];

var len2:Number = arr.length;

var temp:Array = [];

for (var j:Number=0;j<len2;j  ) {
    temp = arr[j].toString().split(",");
    outputArr.push({'tag_uid':temp[0], 'x':temp[1], 'y':temp[2]});
}

var params:Object = new Object();
params.image = bitmap;
params.message = "YEZAAA";
params.fileName = "file-name";
**params.tags = JSON.encode(outputArr);** --> dynamic value from array

Facebook.api('me/photos', onSaveToPhotoAlbumComplete, params);
  

и вот успешная версия и статические:

 var params:Object = new Object();
params.image = bitmap;
params.message = "YEZAAA";
params.fileName = "file-name";
params.tags = '[{tag_uid:"12345678","x":"0","y":"0"},{tag_uid:"001 111","x":"0","y":"0"}]';

Facebook.api('me/photos', onSaveToPhotoAlbumComplete, params);
  

Так что это просто заставляет меня задуматься, в чем моя ошибка на самом деле?

Здесь действительно есть необходимость, поскольку я уже неделю дергаю себя за волосы, пытаясь разобраться, но безрезультатно.

Ответ №1:

Вот как я получил свои динамические идентификаторы для работы с вашим кодом:

1) Вы должны помнить, что, как и в вашем статическом коде, параметр tags должен в конечном итоге привести к String . В вашей динамической версии используется фактический Object . Так что сохраняйте это в виде строки, вот так:

 var tagsArr:String = '[{tag_uid:"'   uid1   '", "x":"0", "y":"0"},
                       {tag_uid:"'   uid2   '", "x":"0", "y":"0"}]';
  

Комментарии:

1. Спасибо за советы Андрею Сфату … на самом деле я уже понял .. Исправление здесь .. на самом деле статическая версия, которую я получаю от этого замечательного сообщества (кто-то опубликовал ему похвалу .. о чем я уже забыл)