Tổng quan về OAuth: Người dùng có nói họ là ai không ?:
Tôi không chắc liệu bạn có sử dụng OAuth để đăng nhập vào Stack Overflow hay không, chẳng hạn như tùy chọn "Đăng nhập bằng Google", nhưng khi bạn sử dụng tính năng này, Stack Overflow chỉ hỏi Google xem Google có biết bạn là ai không:
"Yo Google, anh bạn Vinesh này tuyên bố rằng vinesh.e@gmail.com là anh ta, điều đó có đúng không?"
Nếu bạn đã đăng nhập, Google sẽ thông báo CÓ. Nếu không, Google sẽ nói:
"Chờ một chút Stack Overflow, tôi sẽ xác thực anh bạn này và nếu anh ta có thể nhập đúng mật khẩu cho tài khoản Google của mình, thì đó là anh ta".
Khi bạn nhập mật khẩu Google của mình, Google sau đó sẽ cho Stack Overflow biết bạn là ai như bạn nói và Stack Overflow sẽ đăng nhập cho bạn.
Khi bạn đăng xuất khỏi ứng dụng của mình, bạn đang đăng xuất khỏi ứng dụng của mình :
Đây là nơi mà các nhà phát triển mới sử dụng OAuth đôi khi hơi bối rối ... Google và Stack Overflow, Assembla, ứng dụng web-rất-hay-tuyệt-vời của Vinesh, đều là các thực thể khác nhau và Google không biết gì về tài khoản của bạn trên ứng dụng web tuyệt vời của Vinesh ngược lại, ngoài những gì được hiển thị qua API mà bạn đang sử dụng để truy cập thông tin hồ sơ.
Khi người dùng của bạn đăng xuất, họ không đăng xuất khỏi Google, họ đang đăng xuất khỏi ứng dụng của bạn hoặc Stack Overflow hoặc Assembla hoặc bất kỳ ứng dụng web nào đã sử dụng Google OAuth để xác thực người dùng.
Trên thực tế, tôi có thể đăng xuất khỏi tất cả các tài khoản Google của mình mà vẫn đăng nhập vào Stack Overflow. Sau khi ứng dụng của bạn biết người dùng là ai, người đó có thể đăng xuất khỏi Google. Google không còn cần thiết nữa.
Như đã nói, những gì bạn yêu cầu làm là đăng xuất người dùng khỏi một dịch vụ thực sự không thuộc về bạn. Hãy suy nghĩ về nó như thế này: Là một người dùng, bạn nghĩ tôi sẽ khó chịu như thế nào nếu tôi đăng nhập vào 5 dịch vụ khác nhau bằng tài khoản Google của mình, sau đó lần đầu tiên đăng xuất khỏi một trong số chúng, tôi phải đăng nhập vào tài khoản Gmail của mình một lần nữa vì nhà phát triển ứng dụng đó đã quyết định rằng, khi tôi đăng xuất khỏi ứng dụng của anh ấy, tôi cũng nên đăng xuất khỏi Google? Nó sẽ già đi rất nhanh. Tóm lại, bạn thực sự không muốn làm điều này ...
Yeh yeh, bất cứ điều gì, tôi vẫn muốn đăng xuất người dùng khỏi Google, chỉ cần cho tôi biết tôi làm điều này như thế nào?
Như đã nói, nếu bạn vẫn muốn đăng xuất một người dùng khỏi Google và nhận ra rằng bạn rất có thể đang làm gián đoạn quy trình làm việc của họ, bạn có thể tạo động url đăng xuất từ một trong các nút đăng xuất các dịch vụ của Google của họ và sau đó gọi nó bằng cách sử dụng một phần tử img hoặc một thẻ script:
<script type="text/javascript"
src="https://mail.google.com/mail/u/0/?logout&hl=en" />
HOẶC LÀ
<img src="https://mail.google.com/mail/u/0/?logout&hl=en" />
HOẶC LÀ
window.location = "https://mail.google.com/mail/u/0/?logout&hl=en";
Nếu bạn chuyển hướng người dùng của mình đến trang đăng xuất hoặc gọi nó từ một phần tử không bị giới hạn tên miền chéo, người dùng sẽ bị đăng xuất khỏi Google.
Lưu ý rằng điều này không nhất thiết có nghĩa là người dùng sẽ đăng xuất khỏi ứng dụng của bạn , chỉ Google. :)
Tóm lược:
Điều quan trọng bạn cần ghi nhớ là khi đăng xuất khỏi ứng dụng của mình, bạn không cần yêu cầu người dùng nhập lại mật khẩu. Đó là toàn bộ vấn đề! Nó xác thực dựa trên Google để người dùng không phải nhập mật khẩu của mình lặp đi lặp lại trong mỗi ứng dụng web mà họ sử dụng. Phải mất một số thời gian để làm quen, nhưng hãy biết rằng, miễn là người dùng đăng nhập vào Google, ứng dụng của bạn không cần phải lo lắng về việc người dùng có phải là người mà họ nói hay không.
Tôi có cùng triển khai trong một dự án như bạn, sử dụng thông tin Tiểu sử trên Google với OAuth. Tôi đã thử điều tương tự mà bạn đang muốn thử và nó thực sự bắt đầu khiến mọi người tức giận khi họ phải đăng nhập vào Google nhiều lần, vì vậy chúng tôi đã ngừng đăng xuất họ khỏi Google. :)