2013-06-18 9 views
16

Tôi đang thêm nút đăng nhập Google+ vào trang web bằng cách sử dụng server-side flow. Dưới đây là cách tôi làm cho đăng nhập nút:Cách dừng nút Đăng nhập bằng Google+ từ bật lên thông báo "Chào mừng bạn quay trở lại, bạn đã kết nối với ứng dụng này qua Đăng nhập bằng Google+ dưới dạng ....."

<script type="text/javascript"> 
    (function() { 
     var po = document.createElement('script'); 
     po.type = 'text/javascript'; 
     po.async = true; 
     po.src = 'https://plus.google.com/js/client:plusone.js?onload=renderGPlus'; 
     var s = document.getElementsByTagName('script')[0]; 
     s.parentNode.insertBefore(po, s); 
    })(); 
</script> 

<script type="text/javascript"> 
    function renderGPlus() { 
     gapi.signin.render('customGPlusBtn', { 
      'callback': 'gPlusSignInCallback', 
      'clientid': '<my_client_id>', 
      'redirecturi': 'postmessage', 
      'accesstype': 'offline', 
      'cookiepolicy': 'single_host_origin', 
      'requestvisibleactions': 'http://schemas.google.com/BuyActivity', 
      'scope': 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email' 
     }); 
    } 
</script> 

Khi nút được nạp, nó ngay lập tức kiểm tra xem nếu người dùng đã ủy quyền ứng dụng (chế độ tức thời) của tôi. Nếu trước đây người dùng đã cho phép ứng dụng của tôi, thanh thông báo sẽ bật lên ở cuối trang với thông báo "Chào mừng bạn trở lại, bạn đã kết nối với ứng dụng này thông qua Đăng nhập bằng Google+ với tư cách là .....".

enter image description here

Liệu có cách nào để ngăn chặn thông điệp này từ nảy lên?

Trả lời

13

Trước tiên, thư chỉ xuất hiện lần đầu tiên người dùng đăng nhập được Google công nhận cho một phiên trình duyệt cụ thể. Nói cách khác, người dùng sẽ chỉ thấy thông báo nếu họ đã đóng cửa sổ trình duyệt của họ và đã bắt đầu một phiên trình duyệt mới.

Bạn phải ủy quyền cho người dùng bất kỳ lúc nào bạn thấy kết quả cấp phép trả lại thành công và cập nhật người dùng cho trạng thái được ủy quyền. Như vậy, người dùng sẽ tự động được đăng nhập bất cứ khi nào thông báo này xuất hiện.

Vì thông báo xuất hiện ở đó để thông báo cho người dùng của bạn rằng họ đã tự động đăng nhập, có thể bạn không nên tắt thông báo này trừ khi bạn đang cố tình làm cho người dùng có phiên mà bạn đang quản lý rõ ràng.

Tuy nhiên, nếu bạn đã triển khai đăng xuất rõ ràng và đang quản lý trạng thái đăng nhập của người dùng, mã sau đây sẽ thay đổi thành gói đồng bộ plusone.js sẽ chặn thông báo chúc mừng.

<script src="https://apis.google.com/js/plusone.js"> 
    isSignedOut: true 
</script> 

Lưu ý khác, bạn không còn cần quản lý trạng thái của người dùng để đăng xuất người dùng. Phương thức mới gapi.auth.signOut sẽ đăng xuất người dùng. Bạn có thể see a demo of signout here.

Nếu bạn đang làm một đồng bộ bao gồm, cờ global configuration sau sẽ ngăn chặn thông điệp:

window.___gcfg = { isSignedOut: true }; 

UPDATE:

Như đã chỉ ra bởi Chimdi2000 giải pháp này không hoạt động trong Chrome. Bạn có thể thêm CSS sau để ẩn khung nội tuyến đã tạo:

iframe[src^="https://apis.google.com"] { 
    display: none; 
} 

Vì câu trả lời của anh ấy hoàn chỉnh hơn tôi nhiều và giải quyết các vấn đề khác, vui lòng kiểm tra.

+0

Cảm ơn @class. Có, tôi đang quản lý trạng thái đăng nhập của người dùng. Nó sẽ gây nhầm lẫn cho người dùng nếu họ thấy thông báo xuất hiện ngay cả sau khi họ đã đăng xuất khỏi ứng dụng của tôi. Nhân tiện, tôi có thể lấy thêm thông tin về cờ cấu hình toàn cục ở đâu? Có phải nó đang được ghi chép ở bất cứ đâu? – Stanley

+1

Tài liệu dành cho nhà phát triển cho tài liệu Google+ tất cả các cờ được hỗ trợ. Bạn có thể tìm thấy ví dụ tại đây: https://developers.google.com/+/web/signin/#script_tag_parameters. Nếu bạn đang tìm kiếm tính năng tài liệu tóm tắt tất cả các cờ, vui lòng thêm yêu cầu tính năng vào trình theo dõi vấn đề của Google+: https://code.google.com/p/google-plus-platform/ – class

+1

Cảm ơn bạn lần nữa.Tôi đã thêm yêu cầu tính năng: https://code.google.com/p/google-plus-platform/issues/detail?id=594 – Stanley

3

Câu trả lời được chấp nhận là đúng cách để làm điều đó, nhưng nếu vì một lý do nào khác mà bạn chỉ muốn ẩn iframe tạo ra, bạn có thể làm điều đó với CSS:

iframe[src^="https://apis.google.com"] { 
    display: none; 
} 
15

Chỉ gần đây câu trả lời mới được chấp nhận trên trang này để ẩn "Đăng nhập lại của Google chào mừng trở lại bật lên"

window.___gcfg = { isSignedOut: true }; 

không hoạt động trở lại.

AIM: "Ẩn hoặc bỏ đăng nhập Google+ Chào mừng bạn quay lại tin nhắn" trên tất cả các trình duyệt.

Xin vui lòng nếu bạn đã được sử dụng `

window.___gcfg = { isSignedOut: true }; 

để ngăn chặn cảnh báo. Sau khi thử nghiệm nghiêm túc, tôi phát hiện ra điều này.

tôi sẽ khuyên bạn nên sử dụng phiên bản này iframe để ngăn chặn bất kỳ loại Google API bật lên cửa sổ trên trang web của bạn ..

khung nội tuyến 1: iframe[src^="https://apis.google.com"] {display: none;} này Hides tất cả các cửa sổ bật lên từ Google API trên web của bạn trang.

Iframe 2: iframe[src^="https://apis.google.com/u/0/_/sharebox"] {display: none;} Điều này ẩn tất cả Hộp thoại chia sẻ tương tác của Google bật lên trên trang web của bạn.

Iframe 3: iframe[src^="https://apis.google.com/u/0/_/widget/oauthflow/toast"] {display: none;} Điều này ẩn tất cả "Thông báo chào mừng của Google" cửa sổ bật lên trên trang web của bạn.

Iframe 4: iframe[src^="https://apis.google.com/u/0/_/+1/"] {display: none;} Điều này ẩn tất cả "Nút +1 của Google" trên trang web của bạn.

Vì vậy, cho câu hỏi cụ thể này thực hiện điều này trong thẻ Trưởng HTML trang của bạn

<style> `iframe[src^="https://apis.google.com/u/0/_/widget/oauthflow/toast` </style> 

đã thử nghiệm nó và nó hoạt động hoàn toàn tốt.

0

Chimdi2000 's mã phong cách cuối cùng phải là:

<style> 
iframe[src^="https://apis.google.com/u/0/_/widget/oauthflow/toast"] { 
    display: none; 
} 
</style> 

và chạy hoàn hảo.

EDIT:

Mã hóa dưới đây cũng ẩn nút đăng nhập.

<style> 
iframe[src^="https://apis.google.com"] { 
    display: none; 
} 
</style>