2010-11-19 2 views
9

Ho scaricato il C# Facebook SDK "Semplice MVC Sito Esempio" da CodePlex a:facebook-C# -sdk MVC App "Hello World" - come ottenere il token di accesso?

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

e hanno successo ottenuto per l'autenticazione al mio esame di applicazione Facebook. Ma non riesco a capire come ottenere il token di accesso (e ho intenzione di volere l'accesso offline, quindi ho solo bisogno di prendere quel token una volta, quando l'utente prima autorizza la mia app a prendere i dati del feed).

Molte grazie

+0

hai preso questo risolto? Ho aggiunto il javascript FB.getLoginStatus che ha come risultato che l'utente ha effettuato l'accesso. Ma in C# utilizzando sdk l'app.Session è sempre nullo. – Danny

+0

L'ho risolto, per favore vedi il consiglio di Nathan. Forse qualche problema con il tuo ID app? –

+2

Non dimenticare di contrassegnare la domanda come accettata –

risposta

9

Volete fare due cose. Per prima cosa, per richiedere offline_access, è necessario modificare la funzione di accesso Javascript per richiedere l'accesso offline come segue. Questo è in 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>  

Avanti, per ottenere il token di accesso, è sufficiente effettuare le seguenti operazioni in azione dopo che l'utente è autenticato:

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, molte grazie. Funziona perfettamente. Tra l'altro, per le autorizzazioni aggiuntive che ci si aggiungerli come delimitato da virgole lista ad esempio: –

+0