首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity和Facebook 6.0 :解析主机超时: integrated-plugin-canvas-rsrc.fbsbx.com

Unity和Facebook 6.0 :解析主机超时: integrated-plugin-canvas-rsrc.fbsbx.com
EN

Stack Overflow用户
提问于 2014-10-17 01:25:55
回答 1查看 688关注 0票数 2

当我尝试使用Facebook SDK 6.0 for Unity时,有时它会起作用,有时我会收到以下错误消息:

解析主机超时:integrated-plugin-canvas-rsrc.fbsbx.comError(Object) FbDebug:Error(String) c__IteratorA:MoveNext() (在Assets/Facebook/Scripts/FB.cs:398)

当我尝试为MAC构建我的项目时,我也遇到了同样的错误。

它在移动设备上工作得很好。

有什么想法吗?

(我已经在后处理器文件中将UNITY 4_5更改为UNITY 4_6。我正在使用4_6)

非常感谢!

诚挚的问候,

AB

EN

回答 1

Stack Overflow用户

发布于 2014-12-03 20:28:18

这是我从FB.cs文件中修改的LoadFacebookClass方法,它会尝试多次,通常需要5到15次尝试才能下载.dll。

代码语言:javascript
复制
public static IEnumerator LoadFacebookClass(string className, LoadedDllCallback callback)
    {
        int tryAgainForFewTimes = 20; //--Changed--
        while(tryAgainForFewTimes-- > 0) //--Changed--
        {
            var url = string.Format(IntegratedPluginCanvasLocation.DllUrl, className);
            var www = new WWW(url);
            FbDebug.Log("loading dll: " + url);
            yield return www;

            if (www.error != null)
            {
                FbDebug.Error(www.error);
                print("retry: " + tryAgainForFewTimes); //--Changed--
                continue;    //--Changed--
            }
            tryAgainForFewTimes = 0; //--Changed--

#if !UNITY_WINRT
#if UNITY_4_5 || UNITY_4_6 || UNITY_5_0
            var authTokenWww = new WWW(IntegratedPluginCanvasLocation.KeyUrl);
            yield return authTokenWww;
            if (authTokenWww.error != null)
            {
                FbDebug.Error("Cannot load from " + IntegratedPluginCanvasLocation.KeyUrl + ": " + authTokenWww.error);
                authTokenWww.Dispose();
                yield break;
            }
            var assembly = Security.LoadAndVerifyAssembly(www.bytes, authTokenWww.text);
#else
            var assembly = Security.LoadAndVerifyAssembly(www.bytes);
#endif
            if (assembly == null)
            {
                FbDebug.Error("Could not securely load assembly from " + url);
                www.Dispose();
                yield break;
            }

            var facebookClass = assembly.GetType(facebookNamespace + className);
            if (facebookClass == null)
            {
                FbDebug.Error(className + " not found in assembly!");
                www.Dispose();
                yield break;
            }

            // load the Facebook component into the gameobject
            // using the "as" cast so it'll null if it fails to cast, instead of exception
            var fb = typeof(FBComponentFactory)
                    .GetMethod("GetComponent")
                    .MakeGenericMethod(facebookClass)
                    .Invoke(null, new object[] { IfNotExist.AddNew }) as IFacebook;

            if (fb == null)
            {
                FbDebug.Error(className + " couldn't be created.");
                www.Dispose();
                yield break;
            }

            callback(fb);
#endif
            www.Dispose();
        } //--Changed--
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26410370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档