2009-03-18 39 views
8

Tôi làm cách nào để đăng xuất người dùng khỏi trang web kết nối facebook của mình mà không cần sử dụng nút đăng nhập fb? Tôi muốn làm điều đó từ codebehind (C#)?Đăng xuất bằng facebook

Trả lời

10

Tôi phát hiện ra rằng chỉ có một tùy chọn để làm điều đó từ Javascript bằng FB.logout(). Nó có vẻ hơi kỳ lạ khi không có API từ codebehind để làm như vậy.

+6

được chuyển đến FB.logout() – Oduvan

+1

Anh ta yêu cầu một phương thức phía máy chủ không phải bởi javascript – Korayem

+1

vì không có một –

0

Ít nhất trong api php, có phương thức đăng xuất. Để cho nó để làm việc theo phương pháp logout chuyển hướng người dùng đến một url trong facebook.com và sau đó chuyển hướng bạn trở lại trang web của bạn

$ facebook-> logout ("http://site.com/returnAfterLogout.php")

Tuy nhiên tôi đã phát hiện ra rằng trong yêu cầu đó, api javascript vẫn nghĩ rằng api apphp vẫn cho rằng anh ta đã đăng nhập và cho đến khi bạn cố gắng thực hiện yêu cầu api, nó sẽ tăng ngoại lệ.

+0

Đây là câu hỏi liên quan đến phiên bản .Net của api facebook và không phải php. – Dofs

3

Bạn có thể dễ dàng thực hiện việc này từ một phiên bản của lớp facebook.API (facebook.dll). Chỉ cần gọi _api.LogOff()

+1

bạn đang nói về lớp API facebook nào? Tôi cho rằng đó là một trong nhiều thư viện cũ không sử dụng API oAuth 2.0. mới nhất không có phương thức logOff: http://developers.facebook.com/blog/post/395 – jaminto

2

Trải nghiệm đau đớn của tôi cho tôi thấy bạn PHẢI có khoản hoàn trả (sai); sau FB.Connect.logout(); gọi như trong:

FB.Connect.logout (doOnUserLogout()); return (false);

Nếu không, có vẻ như nó đang đăng xuất, với hộp thoại phương thức cho biết như vậy, nhưng sẽ không đăng xuất người dùng.

Tôi đã tìm thấy điều này một cách tình cờ vì nó lại không được ghi lại.

+2

Tôi cho rằng bạn đang gọi phương thức này từ bên trong một nút/liên kết? Nếu đó là trường hợp, đó là lý do tại sao "return false" là bắt buộc. Nó không bị thiếu trong tài liệu facebook - nếu bạn muốn ngăn chặn hành động mặc định của liên kết/nút (ví dụ: href) khi thực thi, bạn sẽ cần trả về false, nếu không nó sẽ điều hướng trước khi xử lý onclick của bạn kết thúc. –

2

dường như ConnectSession không có bất kỳ mã nào trong Đăng xuất methd. Chỉ của nó

void Logout(){ } 

không có gì. tương tự cho Login(){}

nên về cơ bản bạn sẽ cần phải sử dụng phiên bản java script

1

Không phải là nó có thể với curl và một cái gì đó giống như preg_match ("/ a href = \" \/logout.php (. * ?) \ "/", $ page, $ logout_param);

sau đó ...

curl_setopt (. $ Ch, CURLOPT_URL, 'http://m.facebook.com/logout.php' $ logout_param [1]); curl_exec ($ ch);

??

0

Tôi đã làm điều này trong một webview sử dụng:

webview.loadUrl("http://www.facebook.com/logout.php?confirm=1"); 
+0

tính năng này không hoạt động đối với tôi, nó thậm chí không hoạt động thông qua trình duyệt cho tôi. – pho0

7

Nếu bạn chỉ muốn một liên kết đơn giản để đăng xuất người sử dụng, bạn có thể tạo thành một url như thế này:

https://www.facebook.com/logout.php?access_token=ACCESS_TOKEN&confirm=1&next=REDIRECT

Chỉ cần thay thế ACCESS_TOKENREDIRECT bằng các giá trị thích hợp. Facebook thay đổi điều này mọi lúc và sau đó, vì vậy bạn phải xem ra điều đó. Điều này chỉ hoạt động trong trình duyệt, nhưng điều tốt đẹp về cách làm theo cách này là người dùng không phải chờ thư viện JavaScript tải.

Các vấn đề liên quan