2013-10-17 139 views
0

当从一个canvas facebook web应用程序中的unity facebook插件(我试过4.2.4和4.3.3)调用FB.Login时,回调函数永远不会被调用当facebook对话框提示用户接受应用程序的权限时,用户点击取消。Unity Facebook SDK FB.Login无法正常工作

初始化工作正常,sdk加载,然后我用FB委托给FB.Login调用,如果用户取消,则没有回调。你可以在sdk提供的例子中看到这种行为,如果你将它构建为一个web应用程序,并在Facebook上创建一个指向它的画布应用程序。

有什么建议吗?我需要这个回调来继续我的应用程序的流程。

谢谢。

+0

感谢您的报告,我们正在调查此问题。 – benp

回答

1

此问题是由于AbstractFacebook仅仅忽略了从Facebook API接收到的整个FBResult参数,包括用户拒绝授予应用访问权限时的“取消”参数。从AbstractFacebook

反编译OnAuthResponse方法是这样的:

protected void OnAuthResponse(FBResult result) 
{ 
    Dictionary<string, object> dictionary = new Dictionary<string, object>(); 
    dictionary["is_logged_in"] = (object) (bool) (this.IsLoggedIn ? 1 : 0); 
    dictionary["user_id"] = (object) this.UserId; 
    dictionary["access_token"] = (object) this.AccessToken; 
    dictionary["access_token_expires_at"] = (object) this.AccessTokenExpiresAt; 

    FBResult result1 = new FBResult(Json.Serialize((object) dictionary), result.Error); 
    using (List<FacebookDelegate>.Enumerator enumerator = this.authDelegates.GetEnumerator()) 
    { 
     while (enumerator.MoveNext()) 
     { 
      FacebookDelegate current = enumerator.Current; 
      if (current != null) 
      current(result1); 
     } 
    } 
    this.authDelegates.Clear(); 
} 

如果你能以某种方式覆盖此行为,也许你可以剥夺存储在result.message了“取消”参数的形式JSON。

相关问题