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

本文关键字:Facebook 获取 详细信息 状态 会话 登录 SDK 检查 使用 | 更新日期: 2023-09-27 18:16:54

在前端,我已经初始化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?

这是我所拥有的,但我不确定如何在APP ID/Secret中传递以获得更多信息(例如我已包含在登录范围内的电子邮件):

 var client = new FacebookClient();
            dynamic me = client.Get("me");
            string firstName = me.first_name;
            string lastName = me.last_name;
            string email = me.email;

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

var client = new FacebookClient(appID, appSecret);

var client = new FacebookClient(accessToken);

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