Controleer de Facebook-inlogstatus en krijg sessiedetails met behulp van Facebook C # SDK

Aan de voorkant heb ik FB geïnitialiseerd en ingelogd met behulp van:

  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));

Hoe controleer ik aan de achterkant of er een aanmeldingssessie bestaat met behulp van Facebook C# SDK?

Dit is zo veel als ik heb, maar ik weet niet zeker hoe ik de APP-ID/het Geheim moet doorgeven om meer informatie te krijgen (zoals e-mail die ik heb vermeld in het inlogbereik):

 var client = new FacebookClient();
            dynamic me = client.Get("me");
            string firstName = me.first_name;
            string lastName = me.last_name;
            string email = me.email;
4
Ik probeerde ook FbConnectAuth.dll maar toen ik op facebook ingelogd was, is de sessie nog steeds null. En daarom geeft voorwaarde (auth.Validate ()! = ValidationState.Valid) altijd 'geen handtekening gevonden'
toegevoegd de auteur bcm, de bron

1 antwoord

var client = new FacebookClient(appID, appSecret);

of

var client = new FacebookClient(accessToken);

You can grab the access token client-side with the JavaScript SDK and pass it up to the server in a hidden fofm field (conventional of ajax), of the C# SDK exposes what it finds in the cookie and/of signed request via FacebookWebContext.Current.AccessToken. In the past I have found some timing issues where Facebook did not update the cookie with a new access token/signed request in a timely fashion, which is why I get it in Javascript and post it to the server.

0
toegevoegd
In de backend .. hoe zou u het accessToken op de eerste plaats krijgen?
toegevoegd de auteur bcm, de bron
ahh ic. Het gaat om cookies. Ik heb uiteindelijk de C# SDK of andere FB-specifieke afhankelijkheden niet gebruikt. Ik kan gewoon cookies instellen van het FB-object (ID, AccessToken, LoginStatus) waarvan ik heb vastgesteld dat ze na inloggen zijn gewijzigd en pak de waarden daar in de backend.
toegevoegd de auteur bcm, de bron
bewerkte mijn antwoord om meer informatie te geven over toegangstokens
toegevoegd de auteur Pat James, de bron
ja de cookies kunnen problematisch worden in specifieke situaties of browsers. dat is de reden waarom ik ervoor zorg dat ik de accesstoken rechtstreeks gebruik maak van de JS SDK om er zeker van te zijn dat ik de nieuwste en beste autorisatie en userid heb
toegevoegd de auteur Pat James, de bron