diff --git a/Facebook.Unity/Canvas/CanvasConstants.cs b/Facebook.Unity/Canvas/CanvasConstants.cs index 2c279e99c..f496bd215 100644 --- a/Facebook.Unity/Canvas/CanvasConstants.cs +++ b/Facebook.Unity/Canvas/CanvasConstants.cs @@ -27,7 +27,7 @@ internal static class CanvasConstants // a raw string. private const string JSCode = @" window.FBUnity = { - init: function(connectFacebookUrl, locale, debug, initParams, status) { + init: function(connectFacebookUrl, locale, debug, initParams, status) { // make element for js sdk if(!document.getElementById('fb-root')) { var fbroot = document.createElement('div'); @@ -38,12 +38,9 @@ internal static class CanvasConstants // load js sdk var js, id = 'facebook-jssdk', ref = document.getElementsByTagName('script')[0]; - if (document.getElementById(id)) {return;} - js = document.createElement('script'); js.id = id; js.async = true; - js.src = connectFacebookUrl + '/' + locale + '/sdk' + (debug ? '/debug' : '') + '.js'; - ref.parentNode.insertBefore(js, ref); - // once jssdk is loaded, init - window.fbAsyncInit = function () { + + function on_fb_sdk_loaded() + { initParams = JSON.parse(initParams); initParams.hideFlashCallback = FBUnity.onHideUnity; FB.init(initParams); @@ -54,7 +51,21 @@ internal static class CanvasConstants } else { FBUnity.onInit(); } - }; + } + + if (document.getElementById(id)) { + //already loaded + //need add timeout for make unity some work + setTimeout(on_fb_sdk_loaded, 250); + } + else { + // once jssdk is loaded, init + window.fbAsyncInit = on_fb_sdk_loaded; + //load sdk + js = document.createElement('script'); js.id = id; js.async = true; + js.src = connectFacebookUrl + '/' + locale + '/sdk' + (debug ? '/debug' : '') + '.js'; + ref.parentNode.insertBefore(js, ref); + } }, sendMessage: function(method, param) {