Flash wmode="direct" issue on FB canvas app - facebook

I develop a FB app using Flash using wmode="direct" (for 3D graphics).
In Internet Explorer, every time I popup any FB dialog (e.g Purchase Credits dialog), the flash disappears and when the dialog is closed, the flash does not re-appear...
I tried to set the visibility after dialog is closed:
http://developers.facebook.com/docs/appsonfacebook/tutorial/ (under "Special Considerations for Adobe Flash developers"), but it didn't work.
I've also tried the use FB.Init hideFlashCallback:
http://developers.facebook.com/blog/post/555/ (under "Detecting visibility of Flash objects in Canvas apps"), but it doesn't seem to call the callback function...
Any one had the same issue and manage to make it work?
Any other suggestions?
P.S - I use swfobject to embed the SWF file.
Thank a lot!
Roei
UPDATE: I removed the appId param from the FB JS url:
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js#appId=XXXX&xfbml=1"></script>
and now the hideFlashCallback is executed, but still - the flash does not re-appear...

I've updated the section Special Considerations for Adobe Flash developers because the code snippet was a bit out-of-date.
The new snippet should give you an idea of how to use the hideFlashCallback, whose semantics have changed since that now out-of-date blog post, in that the function now takes a flash element as an argument. (Unfortunately, we haven't redocumented it yet, but will soon). One thing to note is that the callback does not currently work on IE8, but will after a fix gets pushed next Tuesday.
That said, it should work without that callback. It may be caused by a javascript fatal that stops script execution before the re-showing happens. Look in your javascript console to see if you see any errors.
Otherwise, if you can give me the canvas URL for your application, I can look into it.

Did you try it with other wmodes? what you can try is actually remove the div where you write your flash to, add it with innerHTML and run the swfobject.embed again

Related

Facebook is not initialized when using Facebook Login with React in Production

I love React, it has quickly become my favorite development tool. It is a fantastic library that creates the kind of flexibility I've always dreamed about.
That said, I'm having a very hard time getting Facebook login to work with React in production.
I have tried all of the following methods. In all three cases, I implemented the examples exactly as shown in the code using the simplest possible technique:
https://github.com/seeden/react-facebook
https://github.com/keppelen/react-facebook-login
http://jslancer.com/blog/2017/11/27/facebook-google-login-react/
Everything works great in development. :)
When I create the production build using create-react-app and push it live, it breaks and reports: Error: Facebook is not initialized or Uncaught TypeError: Cannot read property 'login' of undefined where undefined is FB.
Basically it seems like the Facebook javascript SDK is not loaded or initialized.
The first two links above are for existing component libraries, but the third is a custom implementation that places the Facebook initialization code in the index.html file and creates an event listener. The results are the same in all three examples.
It is as if something about the create-react-app compression method is obfuscating the variables to the point that Facebook can no longer work, or at least is not available to the react code. This includes all calls to window.FB as recommended in many tutorials.
I've been working at this for a couple of weeks now (off and on) and am now turning to the hive mind. Anyone have any ideas on how to get Facebook to actually work with Facebook's own code library (React)? It seems so painfully odd that it causes this much trouble and I have been unable to find a clear solution that works in production.
Most of the debugging steps are already mentioned in the comments section.
Here are the steps laid down:
1) Check the network tab in your browser's console and see if the request to load FB's SDK is successful or not
2) Most common culprit is some extension like Ad-Blocker blocking such async requests which loads JS on your web page. Disable it or try it incognito mode
3) Other common mistake I have seen is forgetting to use the FB.init({ // config }); function - which is the actual call which initializes the fb sdk and makes available the FB variable globally.

WebPageTest :: How can Start Render be after the load event?

What can cause the start render to be delayed even after the load event has fired?
Look at this webpagetest result
This is most probably a bug. For the moment, the iPhone instance on WebPageTest is quite recent and the author is still improving it:
The iOS support is just becoming stable though it's still under VERY active development so don't be surprised if there are a few rough edges (and a lot more limitations than the android testing).
- Patrick Meenan, 09-09-2015
The android tests are much more reliable.
If you check the page you tested without javascript (F1 > Disable Javascript in Chrome DevTools), you can see that most images are lazy-loaded, which mean they are loaded via a JS script checking if the images are in the viewport. As you can see, without JS the load time line is well after all assets loaded.
Also for other assets, like JS, you can add an async or defer attribute to de-synchronize your scripts loads.
Finally, some scripts can be even deliberately loaded after the load event using an attachment on the window load event to write <script> tags in the body when it's triggered as loadJS do for example.
You should read that by the way to better understand how rendering and events timing work.

Facebook page is not loading properly in mx:html (Adobe AIR) outside IDE

Adobe AIR application which was working perfectly earlier; is not working now. No idea whether it is due to any recent change in Facebook or Adobe AIR.
I have added the component mx:HTML to display http://facebook.com content. In the development environment (Flash Builder 4.5) after logging in facebook successfully; I can see the TimeLine contents and updates properly. But after build when executed outside the IDE; I am able to login facebook but the timeline or updates are not being displayed properly.
Anybody facing similar issue and has a fix; please provide the solution.
uncaughtScriptException gives following two errors...
TypeError: Result of expression 'bigPipe' [undefined] is not an object.
ReferenceError: Can't find variable: console
I have similar issue, if you catch the javascript errors you will notice that facebook is using some library that fails in AIR, then if you google that exact error you will find similar issues. My solution was to use the FB API and reimplement the functionality(in my case share) , other alternatives is to fix that library or FB code to make it work. I don't remember the details but I fixed it a week ago.
Check the docs for catching the JS errors uncaughtScriptException
I am wondering if that library has code for each browser that it supports and on AIR it fails, maybe changing useragent will help, you need to check the javascript code to see where it fails

The method FB.JSON.parse is not officially supported by Facebook and access to it will soon be removed.

I got this warning message on Chrome whith My facebook application.
The method FB.JSON.parse is not officially supported by Facebook and access to it will soon be removed.
and
The method FB.JSON.stringify is not officially supported by Facebook and access to it will soon be removed.
When this flash is loaded this message appears.
I'm using Facebook Flash AS3 API 1.8.1, SWFObject 2.2.
What does it mean ?
Test here (facebook test): https://apps.facebook.com/vuvuzelagame/
Thanks.
I have the same error on my application.
As you probably know, the Facebook AS3 API calls JavaScript functions to communicate with FB, and, as Baris says, this error is a warning that one of those JS functions that it calls is deprecated and will soon be removed.
You can safely ignore it for the present. Hopefully the API will be updated before the function is actually deprecated, otherwise we may get a breaking bug rather than just a warning. I'm going to keep an eye out for updates to the API and upgrade my code as soon as one is released.
Or, if you're feeling really brave, you can go digging in the API source and fix the issue yourself :)
A few days ago, many flash apps suddenly stopped working, if you have this problem follow this steps:
If you are using GraphAPI_Web_1_8_1.swc delete it
Download the modified graph API from here
Paste those folders on your library, if you had the facebook folder overwrite it
Publish your project
This problem started when facebook changed its file http://connect.facebook.net/en_US/all.js in a way that all the calls made from the AS3 file FacebookJSBridge.as must be changed from FB.JSON to just JSON.
(Source)
FB.JSON.stringify is that a javascript function or actionscript function?
In flash if you are targetting flash player 11 and up you can just use JSON.parse and JSON.stringify, or you can use the JSON class in the com.adobe.serialization package.
If that is a javascript method, just get a json library from the web.
The error just means facebook is no longer supporting/updating that function and they will remove it. It will stop working soon so you should replace your usages of it with something else.

Facebook pay.prompt callback fails in IE with wmode=window

My Flash app calls:
Facebook.ui("pay.prompt", data, onPayCallback, "iframe");
which works correctly on all browsers, until a recent change in the embedding of the swf file. I now use wmode="window" which gives much better performance in IE (previously I used "opaque").
When the facebook credits popup appears, the game is now hidden as expected. It returns correctly when the popup is closed. However, on IE (version 9, other versions are untested) the callback is never called.
Any ideas please?
Did you manage to get any further on this?
In my case the javascript callback is triggered, and the call to the flash function is also being made, but throws an error "Object required".. with a little bit more digging (using IE's developer tool) the addcallBack function in the swf was null..