Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Приложение для фейсбука (http://www.flasher.ru/forum/showthread.php?t=204625)

areostar 07.11.2013 02:48

Приложение для фейсбука
 
Мне надо быстренько постройть игрушку под данную соц. сеть.

ПОделитьсь кто иожет ссылками на статьи, урокт и исходными кодами. документацию читаю но быстро въехать не получается

olexandr 07.11.2013 12:05

а что там такого архисложного? пользоваться флешовой библиотекой не советую. сразу делайте мост к яваскрипту и уже из него запросы все на фейсбук. несколько дней назад разбирался с этим - все достаточно просто

caseyryan 07.11.2013 12:21

olexandr, может поделитесь своими наработками?
Понятно что передать данные для инициализации просто. А вот как потом из флеша делать запросы, скажем на загрузку списка друзей, или на показ окна платежей? ExternalInterface в гугл хроме глючит.
Я как-то заморачивался с фейсбуком, делал запросы из оперы или осла, все норм, в гугл хроме молчок. При этом ExternalInterface.available было true.
В итоге решил забить на фейсбук, так как времени слишком много на это тратилось, и сделать универсальную тулзу для коннекта к одноклассникам и контакту.
Но если у вас есть готовая библиотека для работы с фейсбуком, и вы готовы ей поделиться, думаю публика будет благодарна, и я тоже ;)

olexandr 07.11.2013 12:33

У меня стояла задача получить айдишник, имя и показывать окно приглашения - все это получилось сделать при помощи ExternalInterface. Выкладывать свой код не хочу по причине того, что это первое, что я писал на яваскрипте и сомневаюсь, что стоит его распространять )

caseyryan 07.11.2013 12:43

Получить айдишник можно и без ExternalInterface. В ФБ он еще при вызове init() передается. Просто толкаем его в flashVars и передаем флешке.
Зачем тогда писать
Цитата:

а что там такого архисложного?
если у вас получается только айдишник, имя и окно приглашения?
Сделайте хотя бы возможность вызова платежки и пост на стену, а потом говорите сложно это или нет.

olexandr 07.11.2013 13:03

пока не нужно. неужели они сильно отличаются от запросов на инфу о себе или окна приглашения?

areostar 07.11.2013 14:18

Мне надо как минимум имя и фотографию вытинуть! и Ещё подскажите плиз если игра на двух человек как это реализовывается? как в фейскуке свести в игре именно двух определённых людей?

caseyryan 07.11.2013 14:37

Цитата:

Ещё подскажите плиз если игра на двух человек как это реализовывается? как в фейскуке свести в игре именно двух определённых людей?
Фейсбук тут ни при чем. Для этого нужен свой сервер

GBee 07.11.2013 15:47

А это не пашет?
https://developers.facebook.com/tools/explorer/

Я так понимаю там вообще сквозные ид.

https://developers.facebook.com/tool...od=GET&path=me
https://developers.facebook.com/tool...h=me%2Ffriends

и тд

C4Grey 07.11.2013 16:25

Как-то нужно было быстро портировать приложение на FB, особого желания разбираться с очередным глюком в трехлетней давности API на AS не было, потому на коленке сделал так:
1. Логин(в терминологии ФБ - это вход в соц.сеть + добавление приложения в список пользовательских приложений) на JS, при этом нужно было отключать автоматическую проверку статуса в FB.init, чтобы асинхронно сообщить флешке о завершении операции логина(возможно, есть какое-то решение с событиями, но все делалось в спешке, и найти что-то подходящее не удалось, да и JS у меня не числится в списке понимаемых языков):
Загрузка скриптов API:
Код:

(function(d, s, id)
{
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id))
        {
                return;
        }
        js = d.createElement(s);
        js.id = id;
        js.src = "//connect.facebook.net/en_US/all.js";
        fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

Инициализация API:
Код:

window.fbAsyncInit = function()
{
        FB.init({
                appId      : '',
                channelUrl : '',
                cookie : true,
                status : false,
                xfbml : false
        });
        IsFBLoaded = true;
};

В флешке по таймеру выполнялась проверка IsFBLoaded(в это время пользователь видел анимированный загрузчик), после успешной инициализации через ExternalInterface вызывался метод:
Код:

function PerformLogin()
{
        FB.getLoginStatus(function(response)
        {
                if(response.status === 'connected')
                {
                        NotifyLogin(response);
                }
                else
                {
                        FB.login(function(response)
                        {
                                NotifyLogin(response);
                        }, {scope: 'publish_actions,publish_stream'});
                }               
        }, {scope: 'publish_actions,publish_stream'});
}

Скорее всего, это можно реализовать намного проще, но в данном случае в готовый пайплайн инициализации приложения пришлось впихивать подключение к FB, потому такое решение оказалось оптимальным так как заработало сразу :) .

2. Работа с API через HTTP-запросы, загрузка списка пользователей с использованием FQL:
Код AS3:

public function GetUsers(AIDs:Vector.<String>):void
{
        var vList:String = AIDs.join(',');
        var vFQL:String = 'SELECT uid, name FROM user WHERE uid IN (' + vList + ')';
        var vRequest:FBSimpleRequest = new FBSimpleRequest();
        var vData:URLVariables = new URLVariables();
        var vURL:String = 'fql?q=' + vFQL;
        vRequest.CompleteHandler = OnUsersList;
        vRequest.ErrorHandler = OnUsersError;
        vRequest.Method = URLRequestMethod.GET;
        vRequest.Data = vData;
        vRequest.Load(API + vURL);
}

Похожим способом и посты на стенку, и работа с Open Graph API была реализована(live feed у пользователя)...да и любой метод Graph API так можно реализовать, главное получить access token с нужными правами. Нужно только не забывать, что REST API использует коды ошибок HTTP и слушать HTTPStatusEvent.HTTP_STATUS загрузчика, чтобы отлавливать JSON с информацией об ошибках.
P.S. В Chrome тогда ExternalInterface работал(приложение было проверено даже на Safari под Windows %) ), как сейчас - не в курсе. Вроде есть возможность выполнить логин на серверной стороне с redirect url и последующей передачей токена, скажем, в flashvars, но тогда так и не получилось нормально это реализовать...если будут проблемы с ExternalInterface - стоит попробовать такой метод.


Часовой пояс GMT +4, время: 09:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.