Вопрос

Я звоню com.facebook.graph.Facebook.init(APP_ID, loginHandler);

для входа в Facebook с помощью ActionScript API (как описано в этом руководстве: http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt4.html).Но, похоже, это ничего не делает.

Если посмотреть на исходный код API, то единственный вызов, который выполняется к JS, — это ExternalInterface.call('FBAS.init', JSON.encode(options));

Требуются две библиотеки javascript:

http://connect.facebook.net/en_US/all.js
FBJSBridge.js

Однако я не могу найти никаких упоминаний о FBAS в этих библиотеках.Я вообще использую правильные библиотеки?Есть ли еще одна причина, по которой я пропустил, почему FBAS не существует?или даже почему вызов Facebook.init() ничего не дает?

Это было полезно?

Решение

Fbjsbridge.js был встроен в SDK. Посмотрите на com.facebook.graph.core.Facebookjsbridge.as, и вы увидите, что весь блок JavaScript, который был Fbjsbridge.js, прикреплен к внешней интерфейсе в Com.Facebook.graph.facebook.ass конструктор.

Я борелся с этим весь день. Я наблюдал за HTTP Goodning Facebook.init (), и похоже, что он просто ждет, пока он не разумеется, в какой момент другой получает. Это никогда не возвращается нормально. Я попробовал AppID, apikey там и всевозможные комбинации параметров, но я никогда не видел, что он вернулся. Я должен сделать вывод, что это так это предназначено для работы. Если нет, то так это так работает. : - /

Во всяком случае, вы увидите внутри FBA в этом блоке JS в Facebookjsbridge.As, что инициативы подписывается на событие «Auth.SessionChange», которое триггеры Facebook.handlesSessionConge (). Вы можете увидеть, где ваш обратный вызов называется. Хитрость заключается в том, что это то, что называется в любое время Sessionchanges. Итак, даже если в следующий раз, когда события срабатывают не из-за ответа FB.init (), ваш обратный вызов все равно позвонится в этот момент.

Если вы устанавливаете свой собственный обработчик для «AUTH.SISECHANGE», прежде чем позвонить в Facebook.init (), и вы устанавливаете «Cookie», то после создания файла cookie вы получите стрельбу события SessionChange сразу после вызова init. Обратный вызов INIT по-прежнему не вызывается, хотя, потому что получение никогда не получает ответа.

Facebook.addJSEventListener("auth.sessionChange", onSessionChange);
Facebook.init(_appID, onInitFacebookConnect, 
      {cookie: true, 
       appId: _appID, 
       perms: "user_birthday,read_stream,publish_stream"});

Примеры, которые вы найдете в этом руководстве, могут работать, но не то, что вы хотите использовать, когда на самом деле вкладываете приложение вместе. В противном случае вы всегда собираетесь нажать кнопку, чтобы вызвать FBConnect. Похоже, OAUTH2 будет способ получить желаемое поведение не нужно, чтобы каждый раз нажимать на кнопку «Connect». Вы можете получить SessionKey из OAUTH2, а затем используйте Graphsdk Flash / Facebook или JS в зависимости от того, в зависимости от того, что вам наиболее удобно для того, что вы пытаетесь сделать.

Это может помочь:http://blog.yoz.sk/2010/05/facebook-graph-ap-and-oauth-og-and-flash/

Другие советы

Кажется, есть несколько причин, почему это не удается.Посмотрите эти ссылки:

http://code.google.com/p/facebook-actionscript-api/issues/detail?id=165

http://www.pastrytech.com/willy/FacebookActionScript3SDKExample.html

Для меня это было неправильный порядок тегов сценария в файле-оболочке, который предоставляется в руководстве Adobe.

Убедитесь, что библиотека Facebook JS добавлена ​​ДО swfobject.Т.е.убедитесь, что теги вашего скрипта расположены в следующем порядке:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>

Заменять

embedSWF("MyApp.swf", "flashContent", "640", "480", "9.0", null, null, null, {name:"flashContent"});    

с участием

swfobject.embedSWF("MyApp.swf", "flashContent", "640", "480", "9.0", null, null, null, {name:"flashContent"});  

т.е. swfobject. встроен

Работал как шарм!

В моем случае это был index.template.html, который не работал. Мне нужно: 1) ссылка на FB JS SDK
2) Используйте FB-root div в качестве первой записи внутри тега тела

Это решило мою проблему.

Редактировать: Я был смущен, что Facebook.init () работает только тогда, когда пользователь вошел в систему. Для аутентификации я звоню Facebook.login

Редактировать2: Пересмотрел эту вещь ... На этот раз я пропустил, что URL-адрес Canvas должен указать на вашу страницу, если не конечно, вызов идет на другую страницу, и вы никогда не получаете ответ. Очевидно, но он снова ударил меня ......

Кажется, что FBAS.getSwf() использует имя SWF в его звонке document.getElementById.

Итак, если вы укажете ID, но не имя, то JavaScript Facebookjsbridge.ass ищет элемент с идентификатором NULL.

Или, если вы укажете имя, но не идентификатор, то JavaScript Facebookjsbridge.ass ищет соответствующую строку, но элемент без такого идентификатора не существует.

Если вы укажете имя и идентичный идентификатор, то он может на самом деле найти SWF.


var appId = "1234567890";

var swfNameAndId = "app_" + appId;

swfobject.embedSWF("/swfs/TestApp.swf", "app_placeholder", 760, 450, "9.0.0", false, { "appId": appId }, { "allowscriptaccess": "always" }, { "name": swfNameAndId, "id": swfNameAndId });
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top