当从一个画布facebook网页应用程序中的unity facebook插件(我已经尝试过4.2.4和4.3.3)调用FB.Login时,当用户在facebook提示时点击取消时,永远不会调用回调函数用于接受应用权限的对话框。
Init工作正常,sdk加载,然后我用facebook委托调用FB.Login,如果用户取消,则没有回调。如果您将其构建为webapp并在Facebook中创建指向它的画布应用程序,则可以在sdk中提供的示例中看到此行为。
有什么建议吗?我需要回调来继续我的应用程序流程。
谢谢。
答案 0 :(得分: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。