對WP7

6

我試圖增加對註銷功能,這就是所謂的ApplicationBarMenuItem的單擊事件註銷Facebook的C#SDK的,下面the instructions on this blog對WP7

這是我的代碼如下所示:

var oauth = new FacebookOAuthClient(); 

    var logoutParameters = new Dictionary<string, object> 
      { 
       { "next", "http://www.facebook.com" } 
      }; 

    var logoutUrl = oauth.GetLogoutUrl(logoutParameters); 

    LayoutRoot.Children.Add(FacebookLoginBrowser); 
    FacebookLoginBrowser.Navigate(new Uri(logoutUrl.AbsoluteUri, UriKind.Absolute)); 

我期望這段代碼會做的事情是,在Navigated事件完成時將用戶從Facebook上註銷,然後在參數中顯示任何URL(在本例中爲facebook.com)。然而,我所看到的是它總是加載「http://m.facebook.com/」,不管傳入什麼內容,也不會註銷Facebook。我不在乎它在加載之後會是什麼(這很好,但是現在我只想讓它執行註銷操作,以便用戶在他們再次啓動我的應用程序時可以退出並登錄)。我可以成功註銷用戶的唯一方法是,他們瞭解何時加載頁面需要向下滾動,放大,然後在頁面底部手動單擊「註銷」 - 這是不可接受的用戶體驗。

我也下載了該博客的示例代碼,它大致相同。

我見過thisthis post和使用的URL是相當接近的是什麼oath.GetLogoutUrl(logoutParameters)回來了,但我想建造的確切網址具有相同的結果:

var logoutUrl = new Uri("https://www.facebook.com/logout.php?next=http://www.facebook.com&access_token="+fbClient.AccessToken); 

這肯定是我的應用程序的船舶塞,所以任何人可以提供任何幫助或建議將不勝感激!

回答

1

原來的問題是,在重定向URL域名不匹配在Facebook上的應用程序設置提供的網站域名之一。顯然,沒有人可以看到,因爲你沒有訪問我的應用程序設置,但有點線索,我的應用程序無法註冊「http://www.facebook.com」(如我相信該領域必須是獨一無二的)。

解決方案是在下一個參數中使用我自己的網站,在我的情況下是thecruxapp.com。此外,session_key可以和API_KEY被要求,所以最後爲我工作的代碼是:

string logout_format = "http://www.facebook.com/logout.php?api_key={0}&session_key={1}&next={2}"; 
string access_token = HttpUtility.UrlDecode(fbClient.AccessToken); 
char[] tokenSeparator = new char[] { '|' }; 
string session = access_token.Split(tokenSeparator)[1]; 

FacebookLoginBrowser.Navigate(new Uri(string.Format(logout_format, apiKey, HttpUtility.UrlEncode(session), HttpUtility.UrlEncode("http://thecruxapp.com")))); 

我沒有遇到被掛在另一個答案的錯誤和它沒有關係 - 無論是註銷和只要傳遞到下一個參數的網址與在Facebook上的應用設置中輸入的網站域匹配,重定向就會發生。

+0

我沒有在我的fb應用程序站點域中輸入任何內容。所以這個解決方案不適合我。我仍然無法登錄或註銷我的wp7應用程序。 – Buju 2011-07-05 10:16:44

+0

Facebook需要一個網站域名。我的情況可能與您的情況相同 - 我的應用不是一個網站,並且不會爲任何事情使用後端。我必須註冊一個域並設置託管才能使其正常工作。如果您的應用程序值得構建原生應用程序,則可能值得託管一個信息着陸頁來代表它。 – Subcreation 2011-07-07 20:19:23

+0

我可以證實此技術現在可行。我現在設置我的網站網址指向www.facebook.com。 – 2011-07-27 00:52:21

2

顯然,這是對Facebook的側破:http://bugs.developers.facebook.net/show_bug.cgi?id=17217

+0

我這標誌着作爲回答,因爲它看起來像的說法是正確的 - 它必須是在Facebook上的一側的錯誤。但是,鏈接的錯誤可能與我所看到的行爲有關,但不是。在那裏發佈的每個人都描述了被註銷但沒有被轉發到糾正他們在下一個參數中指定的url。我沒有註銷期 – Subcreation 2011-06-07 16:08:29

+0

對不起,刪除了標記作爲答案,直到我確定該錯誤是Facebook的而不是我的代碼 – Subcreation 2011-06-07 22:46:05

+0

Prabir鏈接到您所做的相同的錯誤報告,所以我想它必須是相關的。我希望我對此有更多的瞭解。如果有人能向我解釋這個鏈接的錯誤是如何導致註銷不會完全發生在我的應用程序上,那麼用戶需要手動完成註銷,我真的很感激它。目前我唯一的解決方法是在瀏覽器上方顯示文本,指示用戶完成註銷(這是相當貧民窟) – Subcreation 2011-06-10 00:56:47