FB.Init与Facebook Developer Toolkit异步

时间:2010-11-12 12:43:37

标签: c# asp.net facebook

我有一个现有的asp.net网络应用程序,它使用Facebook来验证用户。我正在使用这个facebook工具包http://facebooktoolkit.codeplex.com/

我的页面包含以下代码:

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"
    type="text/javascript"></script>
<script type="text/javascript">
    //Login and redirect
    function onLogin() {
        window.location.href = "facebookusermapping.aspx";
    }
</script>


   <div class="FBLogin"><fb:login-button onlogin="onLogin()"></fb:login-button></div> 

<script type="text/javascript">FB.init("<%=ConfigurationManager.AppSettings["ApiKey"]%>","xd_receiver.htm");</script>

我的页面需要一段时间才能加载,因为它似乎正在等待Facebook登录按钮和要加载的内容,因此建议我使用此代码异步执行:

 <div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId  : 'YOUR APP ID',
      status : true, // check login status
      cookie : true, // enable cookies to allow the server to access the session
      xfbml  : true  // parse XFBML
    });
  };

  (function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
  }());
</script>

但这是使用新的Api作为我认为使用旧API的工具包吗?

当我使用现有代码检查用户是否经过身份验证时,它总是返回false。

不必重写太多,有没有人知道我可以阻止我的页面等待facebook加载的方式?

1 个答案:

答案 0 :(得分:0)

如果必须继续使用旧工具包,则不应切换到新的Javascript SDK。所以保持你的javascript代码不变。关于加载问题,我不确定是什么原因引起的,但你肯定不会通过切换到新的Javascript SDK来解决它,除非你想重写整个应用程序。

但是,Facebook Toolkit已被弃用,不支持新的Facebook身份验证系统。当Facebook确实强制要求新的身份验证系统时(我认为最好的3-6个月)你的应用程序将会中断。因此,如果此应用程序需要超过该时间段,您可以将其升级到新的身份验证系统。如果您要升级应用程序或创建新应用程序,则需要使用可在http://facebooksdk.codeplex.comhttp://www.microsoft.com/facebook找到的新Facebook C#SDK。

披露:我是Facebook C#SDK的主要开发者。