1

J'ai un site Web MVC 3 avec le Facebook C# SDK. Maintenant, je suis en train de refaire l'intégration de facebook dans une application propre MVC 4 avec la nouvelle version 6 de la SDK. J'ai donc utilisé la page d'aide lancée par gettings sur le site Web de sdk. J'ai suivi le tutoriel et n'a modifié qu'une partie du tutoriel. La chose que j'ai changée était que j'appelais une action de contrôleur parce que le ashx était tiré mais n'était pas autorisé à placer le accesstoken dans l'objet de session. La session était nulle.Accesstoken non disponible après la réouverture du site Web

Maintenant, lorsque je démarre le site Web pour la première fois (utilisé Chrome, car IE ne fonctionnera pas par défaut.Le tutoriel explique pourquoi.), Je vois le bouton de connexion. Lorsque j'appuie sur le bouton de connexion, j'obtiens la page d'autorisation de facebook qui demande que mon application veuille se connecter à mon compte facebook. Lorsque je soumets, l'action MVC dans le contrôleur est déclenchée et le accesstoken donné est stocké dans la session. Après cela, je peux accéder à mes propres informations. Lorsque je ferme Visual Studio (IIS Express est fermé avec) et redémarrez le site Web, le bouton de connexion est changé pour mon compte avec l'image qui indique que j'utilise l'application qui est connectée. Après cela, je retourne à la page avec mes propres informations et obtenir une exception nullreference sur la session qui obtient le accesstoken. Pourquoi donc? Pourquoi l'utilisateur est-il connecté mais l'action qui stocke le accesstoken n'est pas déclenchée la deuxième fois que j'ouvre le site Web (nouvelle session).

Ne devrais-je pas définir le secret de l'application quelque part? J'ai mis le AppId dans le javascript suivant le tutoriel.

Merci.

Répondre

0

Par Facebook, votre utilisateur est connecté à votre application, mais depuis que vous avez redémarré votre serveur Web Cassini, votre "session" est supprimée/perdue/supprimée.

Vérifiez votre session pour vous assurer d'avoir un jeton valide, en cours de session, s'il ne redirige pas l'utilisateur vers votre code de connexion.

+0

Je sais que la session est perdue, donc l'accestoken n'est plus dans la session. Mais pourquoi ne verrais-je pas le bouton de connexion alors mais au lieu de cela je vois mon propre nom et une petite photo de profil ... Maintenant je ne peux plus me connecter pour que le code accestoken ne puisse pas être renvoyé –

+0

Facebook maintient son propre état, qui n'est pas nécessairement identique à l'état de la session de votre serveur Web. Si vous voulez qu'ils correspondent, alors vous devriez appeler FB.logout() pour se débarrasser du cookie du client qui fait apparaître l'image. – DMCS

+0

Hmmm Je vois qu'il y a une différence entre la session facebook IE et la session chrome car quand je me déconnecte dans IE, et que j'ouvre chrome, je suis toujours connecté sur Facebook. Lorsque je me déconnecte de Chrome et que je lance mon application en chrome, je ne vois plus l'image mais le bouton de connexion n'est pas disponible. Je vois les 4 blocs de chargement de facebook sur l'endroit où le bouton de connexion devrait être. –

Questions connexes