8

Ich habe eine Google Plus-Schaltfläche in meinem Projekt [in CodeIgniter erstellt] verwendet. Hier habe ich den folgenden Code hinzugefügt.Ich möchte die Google Plus-Rückruffunktion aufrufen, wenn ich auf die Google Plus-Schaltfläche klicke

<span id="signinButton"> 
    <span 
    class="g-signin gooConnect" 
    data-callback="signinCallback" 
    data-clientid="my_project_client_id" 
    data-cookiepolicy="single_host_origin" 
    data-requestvisibleactions="http://schemas.google.com/AddActivity" 
    data-scope="https://www.googleapis.com/auth/userinfo.email"> 
    </span> 
</span> 

Dann habe ich den Javascript-Code von Google hinzugefügt. nur Auto-Logins mit meinen Google Mail-Anmeldeinformationen und leite mich zu meinem Armaturenbrett

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

    function signinCallback(authResult) { 
    if (authResult['access_token']) { 
     $.ajax({ 
     url:base_url+'index.php/user/getUserProfile', 
     type:'POST', 
     data:{'access':authResult['access_token']}, 
     beforeSend : function(){ 
      $("#loadingImageBeforeResult").show('slow'); 
     }, 
     success : function(resp){ 
      $("#loadingImageBeforeResult").hide('slow'); 
      if(resp == 'exist'){ 
      window.location.href=base_url+'index.php/user/my_deals'; 
      } else { 
      $('#link_for_geniepage').trigger('click'); 
      } 
     }, 
     error : function(resp){} 
     }); 
    } else if (authResult['error']) { 
     // There was an error. 
     // Possible error codes: 
     // "access_denied" - User denied access to your app 
     // "immediate_failed" - Could not automatially log in the user 
     // console.log('There was an error: ' + authResult['error']); 
    } 
    } 
</script> 

Es funktioniert für mich in Ordnung, aber wenn ich in einem eigenen Tab in meinem Google Mail-Konto anmelden und dann gehe ich auf meine Login-Seite, die Callback-Funktion .

Ich möchte, dass, wenn ich auf diese Google Plus-Schaltfläche klicke, die Callback-Funktion nicht funktionieren sollte. Wie kann ich das machen? Bitte hilf mir.

+0

Es klingt wie Sie auf die Schaltfläche Anmelden sind klicken, und in bei der Unterzeichnung, es bringt Sie zurück in die alten Register, aber Sie wollen, dass es in der gleichen Registerkarte machen? –

+0

@ aritra-chakraborty Da ich keine Beziehungen zu PHP sehe, habe ich Ihre Frage neu geschrieben. – SteAp

+0

ok ... Danke @SteAp ... kannst du mir bitte sagen wie ich das machen kann. – ABorty

Antwort

2

Aus den Dokumenten sieht es so aus, als ob die Sign-in-Schaltfläche, wenn sie auf diese Weise verwendet wird, immer eine sofortige Validierung versucht. Da Sie bereits bei Google angemeldet sind und die App autorisiert haben, meldet sich Google automatisch an und sendet Sie an Ihr Dashboard.

Ich würde vorschlagen, diesen Beispielcode nicht zu verwenden. Sie können stattdessen andere Teile der Google Javascript-API verwenden(). Machen Sie eine Google-Anmeldeschaltfläche, die eine normale Schaltfläche ist. Wenn Sie darauf klicken, rufen Sie gapi.auth.authorize() an, um den Benutzer einzuloggen. Dann passiert nichts, bis Sie auf die Schaltfläche klicken. Wenn dies der Fall ist, wird entweder eine Bestätigung/Anmeldung angefordert oder der Benutzer wird automatisch angemeldet.

+0

Dank @Ron ich werde es implementieren und lassen Sie wissen, wenn ich jedes Problem habe. – ABorty

3

In der signinCallback(authResult) Funktion geben Sie zunächst Überprüfung sollte, wenn der Benutzer angemeldet ist, und Sie sollten dann prüfen, ob der Wert Methode AUTO oder PROMPT ist. PROMPT ist genau das, was Sie möchten, da es zurückgegeben wird, wenn der Benutzer auf die Schaltfläche Anmelden klickt. Hier ist der Code:

function signinCallback(authResult) { 
    if (authResult['status']['signed_in'] && authResult['status']['method'] == 'PROMPT') { 
     // User clicked on the sign in button. Do your staff here. 
    } else if (authResult['status']['signed_in']) { 
     // This is called when user is signed in to Google but hasn't clicked on the button. 
    } else { 
     // Update the app to reflect a signed out user 
     // Possible error values: 
     // "user_signed_out" - User is signed-out 
     // "access_denied" - User denied access to your app 
     // "immediate_failed" - Could not automatically log in the user 
     console.log('Sign-in state: ' + authResult['error']); 
    }