Форум 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 - стоит попробовать такой метод.

areostar 11.11.2013 12:35

Сделал простенькую флешкую попытался поднять на фейсбук - фейсбук меня обругал что страница не валидная(загружал чтраницу что мне флеш соорудил)ю как я понял в страницу надо добавит первый и второй фрагмент что вы дали? или чтото ещё? Может примерчик какой есть?

Добавлено через 10 часов 49 минут
Пытаюсь поднять своё приложения на фейсбук он мне пишет в ответ:
Content was blocked because it was not signed by a valid security certificate.

что за сертификат такой??

KumoKairo 13.11.2013 12:53

caseyryan, помню ваши заморочки с Chrome, но у меня такой балды не было, тестил как раз в хроме из-за удобного консоль лога)

Я делал с JS SDK, через ExternalInterface.

Чтобы поднять тестовое приложение на фейсбук нужно:
1. Хостинг (для включенного сандбокса подойдет и без SSL сертификата)
2. Залить ваше приложение в виде HTML страницы на этот самый хостинг
3. Оформить приложение на фейсбуке в виде App on Facebook -добавить ссылку на хостинг, выставить параметры канваса
4. Запустить приложение

Для релиз версии хостинг обязательно должен коннектиться через https, то есть иметь SSL сертификат.

Самый простой способ с хостингом - залить на Heroku, фейсбук не зря толкает их при создании нового приложения)

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

И кстати да, имя и картинку по айди можно получать вообще без входа в фейсбук, простым запросом к АПИ, как сказал товарищ GBee

caseyryan 13.11.2013 13:34

Цитата:

Если нужно подробней - могу ближе к вечеру соорудить мини туториал по закидыванию флеш приложения в фейсбук, получению имени и фотки и выводу этого добра на экран
Ну, в любом случае это не помешает ;)

У меня времени с ним разбираться вообще нет сейчас, но готовую инфу бы с удовольствием глянул

Цитата:

Сообщение от C4Grey (Сообщение 1151506)
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 - стоит попробовать такой метод.

А что есть FBSimpleRequest? Какой-то свой класс?

C4Grey 13.11.2013 15:00

FBSimpleRequest - это обертка вокруг URLLoader, слушает события статуса, ошибок, выдает объекты, удаляет ссылки по требованию для освобождения памяти. В коде метода GetUsers привел построчно все его свойства для наглядности(хотя URLVariables, например, там не нужны).

Astraport 13.11.2013 17:28

Цитата:

Если нужно подробней - могу ближе к вечеру соорудить мини туториал по закидыванию флеш приложения в фейсбук, получению имени и фотки и выводу этого добра на экран
Нужно! Спасибо. И желательно с выводом окна оплаты:) Ну и постинг на стену картинки.

KumoKairo 14.11.2013 22:20

http://kumokairo.blogspot.ru/2013/11...acebook-1.html (Прошу прощения за внешнюю ссылку)
Не расчитал силы - затянулся процесс.

С выводом окна оплаты там отдельная история, надо создавать html файлы продуктов оплаты. А еще некоторые косяки с округлением цены за вещи до двух знаков, короче надо отдельно писать

Astraport 14.11.2013 22:47

Спасибо. Должно скоро пригодиться, нужно протестировать. Ну и если будет время, то по оплате все же хочется такое же:)

KumoKairo 14.11.2013 22:57

Угу, соорудим. Там основная запарка с синхронизацией загрузки приложения и FB API, остальное проще)

Akopalipsis 15.11.2013 07:24

KumoKairo Спасибо Вам за Ваш труд! У меня к Вам небольшая просьба, если у Вас когда то появится желание, пописать в блоге и сложится так, что Вы будете сомневаться в выборе темы - напишите пожалуйста о соцсетях! Честно если сказать, я бы не хотел много тратить на это время, но уверен, что из-за серверной части, у меня это затянется на очень продолжительное время.

KumoKairo 15.11.2013 13:27

Вложений: 1
О каких соц сетях? О чем вы говорите? Из-за какой серверной части?
Вложение 30173

Akopalipsis 15.11.2013 21:35

Цитата:

О каких соц сетях? О чем вы говорите? Из-за какой серверной части?
Представьте, что Вы вообще не чего про соцсети не знаете. Вы начинаете сутками читать и тратите месяц и после этого понимаете, что можно было бы за день всё это узнать, если б была статья... Вот которую я предлагаю Вам написать. Но начать нужно с того, что читатель вообще не чего не знает и ему нужно обьяснить правильный подход к использованию того, о чем пишите. То есть, Вам нужно обьяснить, правильную логику, типа - использование авторизации начинается с того, что ( если флешь залита на сервере ) + ( если флеш залита в соцсети ) считываешь адресную строку, передаёшь её на сервер, что вот там сделать с этим. Просто я не чего не знаю. Но точно уверен лишь в том, что после каждого учения, понимаю, что время можно экономить.

KumoKairo 15.11.2013 22:13

Ради бога, сделайте хоть что-нибудь сами) Грош вам цена если вы не умеете искать информацию в сети и ждете объяснений на тарелочке) Если вы изначально боитесь, что потратите лишнее время зря - лучше вообще не начинать этим заниматься.

Начните с реализации приведенного примера, но с одним условием - ни одного дополнительного поста на этом форуме. Тогда реально будет толк.

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

Akopalipsis 16.11.2013 02:33

Цитата:

Ради бога, сделайте хоть что-нибудь сами)
Вы меня с собой не путайте - Вы, как я понял, уже работаете, а значит у Вас опыта, больше полгода.
Цитата:

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

caseyryan 16.11.2013 16:40

Akopalipsis, Вы перегибаете палку.
Да, тема сложная, но в том-то и суть, что в программировании ничего просто не дается. Все проходят сложный путь. И если каждый раз все получать в готовом виде, понимание не придет само собой. На любую проблему нужно потратить достаточное количество времени, чтобы что-то осталось в голове. Поискать, постыковывать в голове разные куски, почитать официальные (часто на птичьем языке) документации. Плюс попутно можно изучить еще много того, что в данный момент кажется ненужным, но потом про это вспомнишь, когда столкнешься.

Из личного опыта могу сказать, я на изучение api контакта и одноклассников потратил довольно много времени, и наступал на кучу граблей, но теперь достаточно неплохо знаю и понимаю как с ними работать. Могу Вас уверить, что 90% инфы по работе с их api есть в официальной документации (да, написано не очень доступным языком, но понять можно, если постараться, опять же из личного опыта), еще процентов 7 есть на разных ресурсах, от этого форума до хабры. Ну и остальные, немногочисленные случаи, всегда можно обсудить на форуме.

Akopalipsis 16.11.2013 18:31

Цитата:

Akopalipsis, Вы перегибаете палку.
я бы сто раз подумал о перегибании и даже если бы не нарочно так получилось, то сто раз бы извинился и в теме и в личку. Но! Мне не нравится, что KumoKairo постоянно мне говорит о том, что форум не пошаговая инструкция и учит меня не коду и не делится опытом, а учит предлагает мне делать, как когда то делал сам. И уже с УСЛОВИЯМИ :)
caseyryan полностью с Вами согласен, но у меня так сложилось, что всё по части математики и структуры кода, я учу не задумываясь. Но есть вещи, которые я вообще делать не хочу и был бы рад, если бы кто то поделился, тем более, как я попросил, что если не будет тем для своего блога.
И я извиняюсь перед теми, кому не приятно на этом чудесном форуме читать слова, которые были написанные мной постом ранее. Мне тоже не приятно становится от них.


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

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