authorizer.IsAuthorized在facebook中为c#facebook sdk 4.2.1注销时返回true

时间:2011-01-26 11:59:04

标签: facebook facebook-c#-sdk

我正在测试c#facebook并遇到以下错误:

以下是代码:

        FacebookApp app = new FacebookApp();

        Authorizer authorizer = new Authorizer(app);
        System.Diagnostics.Debug.WriteLine(app.Session);
        if (authorizer.IsAuthorized())
        {
            Response.Write("userid:" + app.UserId + "<br/>");
            var me = (IDictionary<string, object>) app.Get("me");

            foreach (string key in me.Keys)
            {

                Response.Write(key +":" + me[key]+"<br/>");
            }

        }

    }

登录facebook时代码工作正常。但是,当我尝试注销facebook网页并尝试再次访问该页面时,行app.get(“我”)将抛出接受(OAuthException)错误验证访问令牌并且app.session仍然有效。

我做错了什么并且做了authorizer.IsAuthorized call return true甚至从facebook注销?

由于

2 个答案:

答案 0 :(得分:0)

Cookie会过期。不确定官方答案,但Facebook的Cookie会过期(除非您已请求离线访问)。你必须考虑到这一点。

答案 1 :(得分:0)

我相信当您登录Facebook时,由于facebook存储在您的计算机上的经过身份验证的cookie,您上面的代码正常工作,并且只要您拥有经过身份验证的Cookie,当您尝试调用其中一个图表时,facebook就不会抱怨api(即/我)。但是,当您退出Facebook时,您的cookie不再有效。我认为你需要为用户获取一个访问令牌,以便即使用户退出Facebook也可以进行图形api调用,因为如果facebook没有找到经过身份验证的cookie或有效的访问令牌,那么facebook会给你错误。在这里查看更多信息:

http://developers.facebook.com/docs/authentication/