2013-06-18 10 views
16

Sto aggiungendo il pulsante Accedi di Google+ al mio sito utilizzando server-side flow. Ecco come rendo il pulsante Accedi:Come interrompere il pulsante Accesso di Google+ per far apparire il messaggio "Bentornato, hai già effettuato il collegamento con questa app tramite Accesso a Google+ come ..."

<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> 

Quando il pulsante viene caricato, controlla subito per vedere se l'utente ha autorizzato la mia domanda (modalità immediata). Se l'utente ha autorizzato in precedenza la mia applicazione, verrà visualizzata una barra di notifica nella parte inferiore della pagina con il messaggio "Bentornato, hai già effettuato il collegamento con questa app tramite Accesso a Google+ come ...".

enter image description here

Esiste un modo per fermare questo messaggio da popping up?

risposta

13

Innanzitutto, il messaggio viene visualizzato solo la prima volta che un utente esegue l'accesso come riconosciuto da Google per una determinata sessione del browser. In altre parole, l'utente vedrà il messaggio solo se ha chiuso le finestre del browser e ha avviato una nuova sessione del browser.

Si consiglia all'utente di autorizzare l'utente ogni volta che si visualizza il risultato dell'autorizzazione che ha restituito e aggiornato l'utente a uno stato autorizzato. In quanto tale, l'utente si connette automaticamente ogni volta che appare questo messaggio.

Perché il messaggio che appare è lì per informare gli utenti che sono stati firmati automaticamente in, probabilmente non dovrebbe essere sopprimere questo messaggio a meno che non si sta facendo intenzionalmente per un utente il cui sessione si sta gestendo in modo esplicito.

Tuttavia, se è stata implementata la disconnessione esplicita e si sta gestendo lo stato di accesso dell'utente, il seguente codice modificato in include sincrono plusone.js eliminerà il messaggio di errore.

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

Un'altra nota, non è più necessario gestire lo stato dell'utente per firmare l'utente. Il nuovo metodo gapi.auth.signOut firmerà l'utente. È possibile see a demo of signout here.

Se stai facendo un asincrona comprendono, i seguenti flag di configurazione globali sopprimere il messaggio:

window.___gcfg = { isSignedOut: true }; 

UPDATE:

Come sottolineato da Chimdi2000 questa soluzione non funziona in Chrome. È possibile aggiungere il seguente CSS per nascondere l'iframe generato:

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

Come la sua risposta è molto più completa di quella mia e affronta altri problemi, si prega di check it out.

+0

Grazie a @class. Sì, sto gestendo lo stato di accesso dell'utente. Confonderà gli utenti se vedono il messaggio spuntare anche dopo che si sono disconnessi dalla mia applicazione. A proposito, dove posso ottenere maggiori informazioni sui flag di configurazione globali? È documentato da qualche parte? – Stanley

+1

La documentazione per sviluppatori per Google+ documenta tutti i flag supportati. Puoi trovare un esempio qui: https://developers.google.com/+/web/signin/#script_tag_parameters. Se stai cercando una funzione di documentazione che riepiloghi tutti i flag, aggiungi una richiesta di funzionalità al tracker di problemi di Google+: https://code.google.com/p/google-plus-platform/ – class

+1

Grazie ancora.Ho aggiunto una richiesta di funzione: https://code.google.com/p/google-plus-platform/issues/detail?id=594 – Stanley

3

La risposta accettata è il modo giusto per farlo, ma se per qualche altro motivo che si desidera solo per nascondere l'iframe generato, lo si può fare con i CSS:

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

Proprio di recente la risposta di recente accettato in questa pagina per nascondere il "Benvenuto di accesso di Google pop-up"

window.___gcfg = { isSignedOut: true }; 

non funziona di nuovo.

AIM: "Nascondere o sopprimere il messaggio di benvenuto di accesso di Google+" su tutti i browser.

Per favore, se avete usato `

window.___gcfg = { isSignedOut: true }; 

per eliminare l'avviso. Dopo una seria sperimentazione l'ho scoperto.

mi consiglia di utilizzare questa versione iframe per sopprimere qualsiasi tipo di Google API finestra pop-up sulla tua pagina web ..

Iframe 1: iframe[src^="https://apis.google.com"] {display: none;} Questo Nasconde tutte le finestre pop-up da Google API sul web pagina.

Iframe 2: iframe[src^="https://apis.google.com/u/0/_/sharebox"] {display: none;} Questo nasconde tutto Dialogo di condivisione interattiva di Google pop-up sulla tua pagina web.

Iframe 3: iframe[src^="https://apis.google.com/u/0/_/widget/oauthflow/toast"] {display: none;} Nasconde tutto "Messaggio di benvenuto di Google" nella finestra di pop-up.

Iframe 4: iframe[src^="https://apis.google.com/u/0/_/+1/"] {display: none;} Nasconde tutto "Pulsante +1 di Google" nella pagina Web.

Quindi, per questo particolare domanda farlo nel tag head della pagina HTML

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

ho provato e funziona perfettamente.

0

Chimdi2000 's ultimo codice stile deve essere:

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

e corre perfetto.

EDIT:

Coding sotto nasconde anche il pulsante di accesso.

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