2012-10-29 62 views
6

Tôi đã đăng nhập vào ứng dụng của mình bằng thông tin đăng nhập FB của mình. Cuối cùng, tôi thực hiện đăng xuất và xóa các biến phiên của mình. Tôi đăng xuất khỏi ứng dụng, nhưng phiên FB vẫn mở mặc dù tôi làm một bài để trang logout FB với bài như trong các mã:FB Đăng xuất bằng C# sdk

if (Session["FBAccessToken"] != null){ 

    var fb = new Facebook.FacebookClient(); 
    string accessToken = Session["FBAccessToken"] as string; 
    //var logoutUrl = fb.GetLogoutUrl(new { access_token = accessToken, next = "https://www.facebook.com/", }); 
    var logoutUrl = fb.GetLogoutUrl(new { next = "https://www.facebook.com/", }); 

    fb.Post(logoutUrl.AbsoluteUri, new { access_token = accessToken }); 
    Session.RemoveAll(); 
} 

Tôi đã thử cả hai: logoutUrl tạo có và không có tham số mã thông báo truy cập, không hoạt động đối với tôi.

+1

hi kiểm tra bài viết này: http://blog.prabir.me/post/Facebook-CSharp-SDK-Logout.aspx –

+0

Đã kiểm tra rằng Pranay, không thể tìm thấy bất cứ điều gì hữu ích, tôi không có FacebookOAuthClient() lớp chỉ FacebookClient() lớp – Biljanka

+0

Bạn có đề nghị rằng tất cả mọi thứ là ok với mã nhưng lỗi FB đang diễn ra? – Biljanka

Trả lời

2

Đã có thay đổi về đăng xuất khỏi facebook kể từ bài đăng blog cuối cùng của tôi. Đây là cách để đăng xuất.

var fb = new FacebookClient(); 
var logoutUrl = fb.GetLogoutUrl(new {access_token = "...", next = "...." }); 

// redirect to logoutUrl.AbsoluteUri 

url tiếp theo không thể là bất kỳ url tùy ý nào. Tôi phải là một phần của url trang web mà bạn đã sử dụng để truy xuất mã thông báo truy cập.

+1

Đó là tất cả cùng một kết quả nếu tôi đặt trang bắt đầu hoặc trang gọi lại trong tham số nex, phiên người dùng fb vẫn hoạt động, khi bạn mở facebook.com – Biljanka

+0

giải quyết nó. sai lầm của tôi là tôi đang làm một bài đăng và không chuyển hướng đến url đăng xuất. – Biljanka

+0

nếu người dùng chưa có mã thông báo truy cập thì sao? nếu anh ta nhấn nút "Bỏ qua" hoặc nhấn dấu x của cửa sổ thì sao? (có nghĩa là người dùng bị hủy trong quá trình oauth) Tôi có nên để access_token trống không? –

0

@prabir có câu trả lời. Đây là một câu trả lời hoàn chỉnh sau khi tôi tinh chỉnh nó cho ứng dụng MVC của tôi. Chỉ cần thay thế "localhost: 51042 /" bằng bất kỳ URL nào phù hợp cho ứng dụng của bạn.

Điều này thực sự lấp đầy một lỗ trong hướng dẫn: http://www.asp.net/mvc/overview/getting-started/using-oauth-providers-with-mvc

public ActionResult LogOff() 
    { 
     WebSecurity.Logout(); 

     if (Session["facebooktoken"] != null) 
     { 
      var fb = new Facebook.FacebookClient(); 
      var logoutUrl = fb.GetLogoutUrl(new { access_token = Session["facebooktoken"], next = "http://localhost:51042/" }); 

      Response.Redirect(logoutUrl.AbsoluteUri); 
      Session.RemoveAll(); 
     } 

     return RedirectToAction("Index", "Home"); 
    } 
Các vấn đề liên quan