2013-01-01 119 views
0

对不起,如果我再问这个问题,但我真的不能摆脱这个问题。我的应用程序我有2个帐户,我登录一个,一切都很完美我加载相册和一些组合框中的页面,我尝试登录另一个帐户试图获取相同的信息,但我得到的专辑和页面与其他帐户的。我尝试了一切注销,但没有工作。我would.t问,但我阅读并尝试了这么多的代码!由于C#Facebook的SDK 6.1.4注销

这里就是我 “尝试” 登出:

private void button2_Click_1(object sender, EventArgs e) 
    { 
     comboBox1.Items.Clear(); 
     comboBox3.Items.Clear(); 

     //var fb = new FacebookClient(); 
     //var logoutUrl = fb.GetLogoutUrl(new { access_token = this.AccessToken, next = "https://www.facebook.com/connect/login_success.html" }); 
     //webBrowser_01.Navigate(logoutUrl); 

     logout = "ok"; 

     var fb = new FacebookClient(); 
     var logoutUrl = fb.GetLogoutUrl(new { access_token = this.AccessToken, next = "https://www.facebook.com/connect/login_success.html" }); 

     webBrowser_01.Navigate(logoutUrl); 
    } 

这里是我加载数据:

 private void WebBrowserNavigated(object sender, WebBrowserNavigatedEventArgs e) 
    { 
     if(logout.Trim().Length==0) 
     { 

     // get token 
     var url = e.Url.Fragment; 
     if (url.Contains("access_token") && url.Contains("#")) 
     { 
      //this.Hide(); 
      url = (new Regex("#")).Replace(url, "?", 1); 

      this.AccessToken = System.Web.HttpUtility.ParseQueryString(url).Get("access_token"); 

      //MessageBox.Show(this.AccessToken); 

      fb = new FacebookClient(this.AccessToken); 
      fb.PostCompleted += new EventHandler<FacebookApiEventArgs>(fb_PostCompleted); 



      //ALBUM BEST 

      //Get the album data 

      dynamic albums = fb.Get("me/albums"); 
      foreach (dynamic albumInfo in albums.data) 
      { 
       //Get the Pictures inside the album this gives JASON objects list that has photo attributes 
       // described here http://developers.facebook.com/docs/reference/api/photo/ 
       //dynamic albumsPhotos = fb.Get(albumInfo.id + "/photos"); 
       string jdata = albumInfo.ToString(); 
       JObject obj = JObject.Parse(jdata); 
       string aid = (string)obj["id"]; 
       string coverphoto = (string)obj["cover_photo"]; 
       string name = (string)obj["name"]; 
       //MessageBox.Show(aid + " - " + name); 

       Albums_Name[name] = aid; 
      } 


      //ROUTINE PER INDIVIDUARE LE PAGES 

      dynamic All_Accounts = fb.Get("me/accounts"); 
      foreach (dynamic accountInfo in All_Accounts.data) 
      { 
       //Get the Pictures inside the album this gives JASON objects list that has photo attributes 
       // described here http://developers.facebook.com/docs/reference/api/photo/ 
       //dynamic albumsPhotos = fb.Get(albumInfo.id + "/photos"); 
       string jdata = accountInfo.ToString(); 
       JObject obj = JObject.Parse(jdata); 
       string aid = (string)obj["id"]; 
       string name = (string)obj["name"]; 
       Access_Token_Pages = (string)obj["access_token"]; 
       //MessageBox.Show(aid + " - " + name + " - " + Access_Token_Pages); 
       Accounts_Name[name] = aid; 

      } 



      comboBox1.Items.Clear(); 
      //comboBox2.Items.Clear(); 
      comboBox3.Items.Clear(); 



      foreach (DictionaryEntry element in Albums_Name) 
      { 
       if (element.Key.ToString().IndexOf(@"Timeline Photos") == -1 && element.Key.ToString().IndexOf(@"Mobile Uploads") == -1 && element.Key.ToString().IndexOf(@"Profile Pictures") == -1) 
       { 
        comboBox1.Items.Add((string)element.Key); 
       } 
      } 

      comboBox1.SelectedIndex = comboBox1.FindStringExact(Default_Album); 


      //ROUTINE PER INDIVIDUARE GLI ALBUM DELLE PAGES 
      fb2 = new FacebookClient(Access_Token_Pages); 
      fb2.PostCompleted += new EventHandler<FacebookApiEventArgs>(fb_PostCompleted); 

      foreach (DictionaryEntry element in Accounts_Name) 
      { 
       //MessageBox.Show((string)element.Value); 
       dynamic Pages_Albums = fb2.Get((string)element.Value + "/albums"); 
       foreach (dynamic albumInfo in Pages_Albums.data) 
       { 
        //Get the Pictures inside the album this gives JASON objects list that has photo attributes 
        // described here http://developers.facebook.com/docs/reference/api/photo/ 
        //dynamic albumsPhotos = fb.Get(albumInfo.id + "/photos"); 
        string jdata = albumInfo.ToString(); 
        JObject obj = JObject.Parse(jdata); 
        string aid = (string)obj["id"]; 
        //string coverphoto = (string)obj["cover_photo"]; 
        string name = (string)obj["name"]; 
        //MessageBox.Show(aid + " - " + name); 

        All_Pages_Album[name] = aid; 
       } 

      } 

      foreach (DictionaryEntry element in All_Pages_Album) 
      { 

       comboBox3.Items.Add((string)element.Key); 
      } 

      comboBox3.SelectedIndex = comboBox3.FindStringExact(Default_Pages_Album); 

     } 

    } 

    } 

    Thanks 
+1

展是你的代码,否则我们不能帮助你.. – 8bitcat

回答

0

这是问题2个原因造成的。 .net浏览器/ ie和facebook从不工作注销功能。

当用户从Facebook注销或完成他的工作时,您必须编写第二个软件来杀死并打开您的原始软件。不杀死它的可执行webbrowser控件永远不会死:)而且previos用户会话保持活着,不管是什么。

还为除网站Facebook注销停用Cookie在IE中被访问......你要查找该设置

+0

测试非常好!有时候它不起作用,用户的Facebook帐户会混淆并导致问题。我试过你的解决方案...使用你的解决方案...并失败了 – erichste

+0

嗯,我尝试了很多解决方案,但我发布的作品,当你注册你的应用程序(在FB开发者),你必须选择一个“应用程序域”它将由Facebook本身提供,就像我的“https://glacial-beyond-3099.herokuapp.com/”,我尝试了很多,它的工作原理。 – user1941286