Facebook C#SDK永远不能让IsAthorized()返回true

时间:2011-03-08 01:21:05

标签: facebook-c#-sdk

我一直在努力让它发挥作用。我非常有信心我正确设置了我的Facebook应用程序,并且我正在使用正确的appId和appSecret。当我调试Login.aspx并在

上放置断点时
if (response.session) 

我看到使用access_token正确填写了它。但当它击中

背后的代码时
if (auth.IsAuthorized())

总是假的!这是aspx页面上的代码,它只是来自样本。

<h2>Log In </h2>
    <p>
        <fb:login-button autologoutlink="true" perms="email,user_birthday,offline_access,status_update,publish_stream"></fb:login-button>
    </p>
    <div id="fb-root">
    </div>
    <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
    <script type="text/javascript">
        FB.init({ appId: '<%: Facebook.FacebookContext.Current.AppId %>', status: true, cookie: true, xfbml: true });
        FB.Event.subscribe('auth.sessionChange', function (response) {
            if (response.session) {
                // A user has logged in, and a new cookie has been saved
                window.location.reload();
            } else {
                // The user has logged out, and the cookie has been cleared

                //src="http://connect.facebook.net/en_US/all.js"
            }
        });
    </script>

我甚至尝试在登录页面的代码隐藏中使用它

public FacebookSession CurrentSession
        {
            get { return (new CanvasAuthorizer()).Session; }
        }
 if (CurrentSession != null)
            {
                Facebook.FacebookClient fbApp = new FacebookClient(CurrentSession.AccessToken);
                dynamic result = fbApp.Get("/me");
            }

并且CurrentSession也总是为空。

我一直在绞尽脑汁,像heck一样google。而且,我觉得我已经正确设置了FB应用程序。哦,我正在使用最新的5.0.03测试版。谢谢!

2 个答案:

答案 0 :(得分:0)

您是否在注册FB应用程序的域中测试应用程序?如果没有,那么这可能是你的问题 - 我很确定你需要在注册域名上才能获得授权。

答案 1 :(得分:0)

@HOCA我通过http://localhost:5000对此进行测试,这就是我在Facebook上设置的方式。再次,当我在

上设置断点时
if (response.session) 
在login.aspx页面上的

(不是代码隐藏)我得到一个完全填充的会话对象,其中包含所有好东西。只有当它遇到代码隐藏时才会被“授权”。我已经非常成功地使用这个Facebook应用程序与其他Facebook asp.net代码,但我不能让这个SDK代码工作。