Существует подход, основанный на всех действиях, для использования API Facebook, который включает в себя флеш-график Facebook API , но он немного глючит.Пока вы находитесь в браузере, он будет работать для большинства вещей.
График api используется, чтобы предложить пользователю войти в свою учетную запись и предоставить приложению разрешение на выполнение действий, а затем выполнить необходимые действия для этой учетной записи пользователя.Вы запускаете весь процесс с помощью метода Facebook.init:
Facebook.init(APP_ID, onInit);
Где APP_ID - это идентификатор вашего приложения, который вы получаете, когда создаете приложение на Facebook, а onInit - это созданная вами функция обратного вызова, которая должнавыглядеть следующим образом:
function onInit(result:Object, fail:Object):void{
var opts:Object = {perms:"publish_stream"};
if (result) //already logged in because of existing session
doStuff(); //in this case, publish on user's wall
else
Facebook.login(onLogin, opts);
}
Там должны быть два параметра.Если запрос определен, это означает, что пользователь вошел в систему. Если нет, предложите пользователю войти в систему и предоставить разрешения приложению.Узнайте больше о разрешениях на сайте разработчиков Facebook.
Первый параметр Facebook.login - это функция обратного вызова, а второй - разрешения, с которыми пользователь хочет согласиться.onLogin () выглядит следующим образом:
function onLogin(result:Object, fail:Object):void {
if (result) //successfully logged in
doStuff();
else
oh_well(); // they don't want to use it.
}
Это может побудить пользователя войти в систему, однако он сразу же вернется с нулевым значением в результате.Это связано с тем, что функция входа в Facebook плохо написана, если вы настроили флеш-память на веб-сайте и отладили ее с помощью консоли javascript, вы можете увидеть, что она работает по таймеру, чтобы увидеть, вышли вы или нети это никогда не заканчивается.Но если это не имеет большого значения ...
... сейчас, для doStuff.В моем случае я хотел опубликовать сообщение, SWF и миниатюру на стене пользователя.Я сделал это с помощью следующего кода:
function doStuff(){
var obj:Object={
"message": "This is a test message",
"picture": "thumbnail.jpg",
"source": "flash file"
}
Facebook.api("/me/feed", onCallApi, JSON.decode(obj), "POST");
}
Facebook.api () действительно то, что важно.onCallApi - это функция обратного вызова, JSON.decode (obj) - это вышеуказанный объект json с соответствующими дополнениями.«me / feed» - это то, как Facebook подключает фид, пользователя, друга и т. д. Узнайте больше об этом материале здесь. В документации Facebook есть гораздо лучший способ размещения флэш-файла, используя ту же функцию, норазличные параметры в закодированном json, но я не смог заставить его работать (я думаю, это из-за вложенных jsons).И, как вы можете видеть, вам понадобится JSON-декодер от as3corelib.
onCallAPI:
function onCallApi(result:Object, fail:Object):void {
if (result) {
//successful post
} else {
//unsuccessful post
}
}
И это должно делать это для большинства приложений.
флеш-фейсбукapi просто взаимодействует с javascript api, поэтому вам нужно импортировать соответствующие функции javascript из facebook на html-странице, в которую встроена флэш-память.
Вы можете исправить facebook.login, если хотите, очень легко.Вы можете либо продолжать вызывать Facebook.init () до тех пор, пока не пройдет определенное время, либо сгенерировать окно входа в систему в javascript, прослушать, когда окно закрыто, а затем взаимодействовать с обратным вызовом через Flash, используя ExternalInterfaces для распознавания результатов * 1032.*