Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查Facebook登录状态并使用Facebook C#SDK获取会话详细信息_C#_Facebook_Facebook Graph Api_Login - Fatal编程技术网

检查Facebook登录状态并使用Facebook C#SDK获取会话详细信息

检查Facebook登录状态并使用Facebook C#SDK获取会话详细信息,c#,facebook,facebook-graph-api,login,C#,Facebook,Facebook Graph Api,Login,在前端,我已初始化FB并使用以下方式登录: window.fbAsyncInit = function () { FB.init({ appId: @facebookAppId, // App ID status: true, // check login status cookie: true, // enable cookies to allow the server to access the se

在前端,我已初始化FB并使用以下方式登录:

  window.fbAsyncInit = function () {
        FB.init({
            appId: @facebookAppId, // App ID
            status: true, // check login status
            cookie: true, // enable cookies to allow the server to access the session
            xfbml: true,  // parse XFBML
            oauth: true
        });

        // Additional initialization code here
        FB.Event.subscribe('auth.login', function () {
            window.location = "/facebookPostAuth.aspx";
        });

        FB.Event.subscribe('auth.logout', function (response) {
            window.location = '/logout';
        });

        // Hack to fix http://bugs.developers.facebook.net/show_bug.cgi?id=20168 for IE7/8/9
        FB.UIServer.setLoadedNode = function (a, b) { FB.UIServer._loadedNodes[a.id] = b; };

    };

    // Load the SDK Asynchronously
    (function (d) {
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; }
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
    } (document));
在后端,如何使用Facebook C#SDK检查是否存在登录会话

这是我得到的最多的信息,但我不确定如何传递应用程序ID/密码以获得更多信息(例如我在登录范围中包含的电子邮件):


您可以使用javascript SDK在客户端获取访问令牌,并以隐藏的表单字段(常规或ajax)将其传递给服务器,或者C#SDK通过FacebookWebContext.Current.AccessToken公开它在cookie和/或签名请求中找到的内容。在过去,我发现Facebook没有及时用新的访问令牌/签名请求更新cookie的一些时间问题,这就是为什么我用Javascript获取cookie并将其发布到服务器。

我也尝试了FbConnectAuth.dll,但当我登录Facebook时,会话仍然为空。因此,条件(auth.Validate()!=ValidationState.Valid)总是在后端返回“未找到签名”。。首先,你如何获得accessToken?啊,是的。这可以归结为饼干。我最终没有使用C#SDK或任何其他特定于FB的依赖项。我可以从FB对象(ID、AccessToken、LoginStatus)中设置cookie,我观察到该对象在登录后发生了更改,然后从后端获取值。是的,cookie在特定情况下或浏览器中可能会出现问题。这就是为什么我要确保直接使用JSSDK获取accesstoken,以确保我拥有最新和最好的授权和用户ID
 var client = new FacebookClient();
            dynamic me = client.Get("me");
            string firstName = me.first_name;
            string lastName = me.last_name;
            string email = me.email;
var client = new FacebookClient(appID, appSecret);
var client = new FacebookClient(accessToken);