2013-03-30 22 views
5

tôi tích hợp Facebook với trang web của tôi và tôi đã thêm một nút Thoát mà URL được lấy từ:facebook getLogoutUrl trả về một URL với access_token = 0, khi nhấp chuyển hướng trang chủ của Facebook sử dụng

$facebook->getLogoutUrl(array('next' => 'http://mydomain.com/logout.php')); 

Vấn đề là logout.php không bao giờ được gọi. Thay vào đó, khi nhấp vào nút Đăng xuất, nó sẽ chuyển hướng đến trang chủ Facebook của người dùng đã đăng nhập. Nó không đăng nhập người dùng ra khỏi Facebook, và nó không gọi URL next của tôi.

tôi nhận thấy rằng các URL được tạo ra bởi getLogoutURL() trông giống như:

https://www.facebook.com/logout.php?next=http://mydomain.com/logout.php&access_token=0 

Thông báo có một access_token = 0. Giá trị đó có phải không bằng không? Đó là điều duy nhất tôi có thể nghĩ về điều đó có thể gây ra vấn đề.

Tôi đã đặt URL trang web của ứng dụng FB thành http://mydomain.com. Trong khi thử nghiệm cục bộ, tôi cũng đã chỉnh sửa tệp hosts của mình. Tôi cũng đã googled rất nhiều và tôi đã không tìm thấy một giải pháp. Người duy nhất đã làm việc là thêm onclick vào nút đăng xuất của tôi bằng cách sử dụng FB.logout(). Nhưng tôi sẽ cần phải sử dụng PHP.

Bất kỳ ý tưởng nào về lý do tại sao URL đăng xuất không hoạt động?

Trả lời

5

Được rồi, tôi đã giải quyết điều này bằng cách tạo URL logout của riêng tôi và thêm một access token

$logoutUrl = 'https://www.facebook.com/logout.php?next=http://mydomain.com/logout.php&access_token=' . $facebook->getAccessToken(); 
+0

Tôi vừa gặp sự cố tương tự chính xác này, với access_token cũng là 0. Bản sửa lỗi của bạn cũng làm việc cho tôi, nhưng nó giống như một kẻ trả tiền thay vì giải quyết vấn đề tại sao mã thông báo truy cập là 0. Nhưng tôi sẽ bỏ tiền vào đó là vấn đề FB chứ không phải thứ gì đó trong cơ sở mã của chúng tôi. –

+0

tôi không thể tìm thấy bất kỳ tài liệu nào về vấn đề này. Đây có phải là bản hack hoặc bản gốc – Tibin

1

tôi đã cùng một vấn đề quá (access_token = 0), nhưng sau đó tôi nhận ra tôi đã thanh toán bù trừ Facebook cookie trước khi gọi getLogoutURL(). Nếu bạn nhận được kết quả getLogoutURL() đầu tiên, access_token không được bằng không.

4

Tôi hy vọng bạn đã tìm thấy giải pháp! Nhưng nếu không, hãy thử với mã sau đây. Nó làm việc cho tôi!

$facebook->getLogoutUrl(array('next' =>'http://example.com/logout.php', 'access_token'=>$facebook->getAccessToken()));` 

Nếu bạn xem tài liệu chính thức bạn sẽ thấy không có gì về cách đặt tùy chọn mã thông báo truy cập trong mảng tham số nhưng nó thực sự hoạt động! Chúc may mắn!!

+0

điều này có hiệu quả không, cảm ơn bạn! –

+0

Điều này làm việc cho mea là tốt. –

+0

Một chút trễ, nhưng tôi không thể là người duy nhất tìm kiếm giải pháp. Phương pháp này đăng xuất người dùng, không chỉ từ trang web của bạn, mà còn từ facebook nữa. Đó là mong muốn nếu bạn muốn vít với người dùng muốn rời khỏi trang web của bạn :) – DerpyNerd

1

Vấn đề là bạn cần gọi getAccessToken TRƯỚC KHI yêu cầu url đăng xuất.

$facebook->getAccessToken(); 

Không cần gọi bên trong là thông số getLogoutURL. Chỉ cần gọi một dòng trước:

$user = $facebook->getUser(); 
$access_token = $facebook->getAccessToken(); 
$logoutUrl = $facebook->getLogoutUrl(); 
Các vấn đề liên quan