2010-11-19 19 views
9

J'ai téléchargé le SDK C# Facebook "simple site Web MVC Exemple" de CodePlex à:facebook-C# -sdk MVC application "Hello World" - comment obtenir un jeton d'accès?

http://facebooksdk.codeplex.com/releases/view/54371

et ont obtenu avec succès pour authentifier à mon test app Facebook. Mais je n'arrive pas à trouver comment obtenir le jeton d'accès (et je vais vouloir un accès hors ligne, donc je n'ai besoin de récupérer ce jeton qu'une fois, quand l'utilisateur autorise mon application à récupérer ses données de flux).

Un grand merci

+0

Avez-vous régler cette question? J'ai ajouté le FB.getLoginStatus javascript qui résulte dans l'utilisateur est connecté. Mais dans C# en utilisant le sdk l'application.Session est toujours nulle. – Danny

+0

Je l'ai fait résoudre, s'il vous plaît voir le conseil de Nathan. Peut-être un problème avec votre identifiant d'application? –

+2

N'oubliez pas de marquer la question comme acceptée –

Répondre

9

Vous voudrez faire deux choses. Tout d'abord, pour demander offline_access, vous devez modifier la fonction de connexion Javascript pour demander l'accès hors connexion comme suit. C'est dans Views/Home/Index.aspx.

<div id="fb-root"></div> 
    <script src="http://connect.facebook.net/en_US/all.js"></script> 
    <script> 
     FB.init({ appId: '<%:FacebookSettings.Current.AppId %>', status: true, cookie: true, xfbml: true }); 
     $('#fbLogin').click(function() { 
      FB.login(function (response) { 
       if (response.session) { 
        window.location = '<%:Url.Action("Profile") %>' 
       } else { 
        // user cancelled login 
       } 
      }, { perms: 'offline_access' }); 
     }); 
    </script> 
</asp:Content>  

Ensuite, pour obtenir le jeton d'accès, vous venez de faire ce qui suit dans l'action après que l'utilisateur est authentifié:

public ActionResult Profile() 
    { 
     var app = new FacebookApp(); 
     if (app.Session == null) 
     { 
      // The user isnt logged in to Facebook 
      // send them to the home page 
      return RedirectToAction("Index"); 
     } 
    // Read current access token: 
     var accessToken = app.Session.AccessToken; 

     // Get the user info from the Graph API 
     dynamic me = app.Api("/me"); 
     ViewData["FirstName"] = me.first_name; 
     ViewData["LastName"] = me.last_name; 

     return View(); 
    } 
+0

Nathan, merci beaucoup. Fonctionne parfaitement. Soit dit en passant, pour les autorisations supplémentaires on pourrait les ajouter comme une liste délimitée par des virgules, par exemple: –

+0