2015-04-14 7 views
7

Nella mia applicazione Web ho aggiunto un'opzione per la registrazione/accesso tramite Facebook, funziona perfettamente e fa funzionare, i' Sto lavorando con la codifica VS2013 in C# e ASP.NET e quando avvio il debug e premo il pulsante che si connette a Facebook e recupera tutte le informazioni necessarie.Impossibile creare il canale sicuro SSL/TLS dopo un po 'di tempo durante il tentativo di connettersi a Facebook tramite la mia app Web

I problemi iniziano quando avvio il debug e premo il pulsante di Facebook solo dopo un po ', ho già capito che è una specie di timeout, ma non ho idea di come risolverlo.

ho questo pezzo di codice nel mio Page_Load sulla mia pagina master:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; 
     FaceBookConnect.API_Key = "**************"; 
     FaceBookConnect.API_Secret = "**************************"; 
     if (!IsPostBack) 
     { 
      if (Request.QueryString["error"] == "access_denied") 
      { 
       Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('User has denied access.')", true); 
       return; 
      } 

      string code = Request.QueryString["code"]; 
      if (!string.IsNullOrEmpty(code)) 
      { 
       string data = FaceBookConnect.Fetch(code, "me"); 
       FaceBookUser faceBookUser = new JavaScriptSerializer().Deserialize<FaceBookUser>(data); 
       faceBookUser.PictureUrl = string.Format("https://graph.facebook.com/{0}/picture?width=9999", faceBookUser.Id); 
       string fname = faceBookUser.Name.Substring(0, faceBookUser.Name.IndexOf(' ')); 
       string lname = faceBookUser.Name.Substring(faceBookUser.Name.IndexOf(' ') + 1); 
       string email = faceBookUser.Email + "@FB"; 
       string pictureurl = faceBookUser.PictureUrl; 
       string gender = faceBookUser.Gender; 
       if (SQLDB.CheckMailExists(email)) 
       { 
        FormsAuthentication.SetAuthCookie(email, true); 
        FormsAuthentication.RedirectFromLoginPage(email, true); 
       } 
       else 
       { 
        SQLDB.AddFBUser(fname, lname, email, gender, pictureurl); 
        FormsAuthentication.SetAuthCookie(email, true); 
        FormsAuthentication.RedirectFromLoginPage(email, true); 
       } 
      } 
     } 

E questo codice int il codice 'Click' del 'Login with Facebook' tasto:

FaceBookConnect.Authorize("user_photos,email", Request.Url.AbsoluteUri.Split('?')[0]); 

Ho provato a spostare tutto il codice riguardante la connessione Facebook dall'azione Page_Load all'azione Click in modo che proverà a connettersi solo quando l'utente preme il pulsante ma per qualche motivo non funziona ...

Non sono davvero sicuro sul da farsi poiché il codice era qualcosa che ho preso dal web e non è stato creato da me, spero che tu possa dirmi come aggiornare o connettermi ai server di Facebook solo quando è necessario .. Grazie !

+1

Quale SDK di terze parti stai utilizzando? Hai letto la documentazione su come funziona? Si consiglia di utilizzare un SDK documentato e comprendere il suo funzionamento come http://facebooksdk.net/ I frammenti di codice non forniscono informazioni sufficienti su come si sta implementando il login o dove si sta verificando esattamente il problema. –

+0

Forse potresti aggiungere un link dal quale hai ottenuto il codice? – DJmRek

risposta

0

Se si sospetta che la propria connessione a Facebook sia scaduta, è necessario gestirla come qualsiasi altra eccezione e reindirizzare nuovamente alla pagina di accesso. Ecco il mio codice:

catch (Exception ex) 
      { 
       if (ex is AggregateException && ex.InnerException is Facebook.FacebookOAuthException && usedState != null && HttpContext.Current != null) 
       { 
        HttpContext.Current.Response.Redirect("~/FacebookLogin.aspx?logout=true"); 
       } 
       else 
       { 
        throw; 
       } 
      } 
Problemi correlati