2013-06-11 18 views
6

Ứng dụng của tôi được tích hợp với Facebook, Google và Microsoft (sử dụng OAuth).Liên kết đăng xuất với URL trả về (OAuth)

Để đăng xuất từ ​​facebook Tôi đang sử dụng URL sau:

https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken] 

Có một cái gì đó tương tự cho Google và cho Microsoft?

Đối với Google tôi đã cố gắng:

https://accounts.google.com/Logout?continue=http://localhost:51820 

Nhưng nó đã không làm việc ... Nó trả về: The page you requested is invalid.

Làm thế nào tôi có thể nhận được rằng logout URL?

+0

Bạn có sử dụng OAuth cho client-side (chỉ JavaScript tích hợp) hoặc server-side (với mã truy cập và trao đổi thẻ trên máy chủ của bạn)? Lưu ý rằng đối với trường hợp phía máy chủ, việc hiển thị mã thông báo truy cập cho phía máy khách là sai. Facebook cung cấp không có cách thích hợp để đăng xuất những người dùng được ủy quyền qua phía máy chủ. –

Trả lời

17

cuối cùng tôi nhận được các liên kết ngay:

  • Facebook:

https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken]

Nguồn: A Working Facebook OAuth Logout URL

  • Google:

https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=[http://www.mysite.com]

Nguồn: google account logout and redirect

  • Microsoft:

https://login.live.com/oauth20_logout.srf?client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URL]

Nguồn: Server-side scenarios

Những liên kết có thể được sử dụng như thế trong JavaScript:

function logout(){ 
document.location.href = "https://www.facebook.com/logout.php?next=[YourAppURL]&access_token=[ValidAccessToken]"; 
} 

gợi ý để thực hiện điều này: Logout from external login service (Gmail, facebook) using oauth

+0

hi @amp đã thử với mẫu Google của bạn, nó hoạt động tốt! Bạn có cùng một tài khoản LinkedIn ...? –

+0

Cảm ơn người đàn ông. Tôi lãng phí một nửa ngày của tôi tìm kiếm giải pháp để chuyển hướng trở lại nhà của tôi thay vì đăng nhập Google. Điều này thực sự hiệu quả. – vashishatashu

3

Bạn không nên đăng xuất người dùng ra khỏi Facebook, Google, v.v. Bạn chỉ cần đăng xuất họ ra khỏi ứng dụng của bạn. Bằng cách chuyển hướng họ đến accounts.google.com/Logout, bạn đang thực sự đăng xuất người dùng ra khỏi tài khoản Google của họ, điều đó có nghĩa là họ cũng đã mở Gmail trong một tab khác (nói) họ cũng sẽ bị đăng xuất khỏi tài khoản đó. Tương tự, nếu bạn chuyển hướng chúng đến www.facebook.com/logout.php, bạn thực sự đang ghi chúng ra khỏi Facebook, có nghĩa là nếu chúng đã mở Facebook trong một tab khác, chúng cũng sẽ bị đăng xuất khỏi đó.

Thay vào đó, tất cả những gì bạn nên làm, khi người dùng đăng xuất khỏi ứng dụng của bạn, là "quên" mã thông báo OAuth.

+1

Tôi biết điều đó, nhưng tôi hỏi trước nếu họ thực sự muốn đăng xuất khỏi nhà cung cấp. Điều này có thể hữu ích, ví dụ, trong một máy tính công cộng. – amp

+3

Trên thực tế, Facebook nêu rõ trong chính sách của họ rằng bạn PHẢI đăng xuất người dùng khỏi facebook nếu bạn cung cấp nút "đăng xuất" trên ứng dụng của mình. Thật không may, họ không cung cấp một cách chính xác để làm điều này nếu người dùng đã được ủy quyền ở phía máy chủ. –

+0

Tôi cho phép đăng nhập vào một tài khoản trên trang web của mình thông qua cả tên người dùng/mật khẩu và phương tiện truyền thông xã hội. Nếu bạn chỉnh sửa tài khoản của mình để thay đổi mật khẩu và bạn đã đăng nhập bằng tên người dùng/mật khẩu, bạn cần cung cấp mật khẩu cũ của mình (nghĩa là xác thực lại). Nếu bạn đăng nhập thông qua Facebook, bạn sẽ được yêu cầu xác thực lại với Facebook. Nhưng cách duy nhất để làm điều đó là buộc đăng xuất khỏi Facebook - nếu không, xác thực Oauth chỉ thành công ngay lập tức vì phiên của bạn vẫn đăng nhập vào facebook. – sootsnoot