2016-06-18 5 views
-1

Ich habe seit einer Woche mit Google Anmeldung Authentifizierung für PHP ohne Deep Composer installiert. Antwort folgt, um das Frage/Antwort-Format zu erfüllen.easy google signin Identifikation für php backend

+1

Nicht wirklich eine Frage hier. Die Beantwortung Ihrer eigenen Fragen wird empfohlen. Sie sollten diese Frage bearbeiten, um eine Frage zu stellen, und dann Ihre Antwort posten. Es scheint, dass es für zukünftige Leser hilfreich sein könnte, aber wie es ist, verletzt es das Format dieser Seite und ist off-Thema –

Antwort

1

Ich ging viele falsche Enden, obwohl das Endergebnis ist einfach. Ich werde es für andere teilen. Ich bin kein Experte in einem der Werkzeuge hier, so dass Verbesserungen willkommen sind.

zuerst die html5, die dem Benutzer geschrieben wird:

<!DOCTYPE html> 
<html lang="en"> 

    <head> 

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

    <title>demonstration of google sign-in for php</title> 


    <!-- you must add your own value here --> 
    <meta name="google-signin-client_id" content="<yourletterstring>.apps.googleusercontent.com"> 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"> </script> 

    <script src="https://apis.google.com/js/platform.js" async defer></script> 

    <script> 
     function onSignIn(googleUser) { 
     var profile = googleUser.getBasicProfile(); 
     console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead. 
     console.log('Name: ' + profile.getName()); 
     console.log('Image URL: ' + profile.getImageUrl()); 
     console.log('Email: ' + profile.getEmail()); 
     $('#gid').html(profile.getId()); 
     $('#gemail').html(profile.getEmail()); 
     $('#gimg').attr("src", profile.getImageUrl()); 
     $('#gname').html(profile.getName()); 
     $('#gstatus').html("logged in"); 
     $('#gstatus').attr("style", "color:green"); 

     var id_token = googleUser.getAuthResponse().id_token; 
     $('#gtoken').html(id_token); 

     clickurl = 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token='+id_token; 
     $('#gtokenurl').html('<a href="'+clickurl+'">click here</a>'); 

     $('#fidtoken').attr("value", id_token); // passing into form 

     $('#showresults').attr("display", "block"); // not working. 
     } 


     function signOut() { 
     var auth2 = gapi.auth2.getAuthInstance(); 
     auth2.signOut().then(function() { 
      console.log('User signed out.'); 
      $('#gid').html(""); 
      $('#gemail').html(""); 
      $('#gimg').removeAttr("src"); 
      $('#gname').html(""); 
      $('#gstatus').html("logged out"); 
      $('#gstatus').attr("style", "color:red"); 

      $('#gtoken').html(""); 
      $('#gtokenurl').html(""); 

      $('#showresults').attr("display", "none"); // not working 
      $('#showresults').attr("visibility", "hidden"); 
     }); 
     } 

    </script> 

    <style>td { padding:1ex; }</style> 

    </head> 

    <body style="margin:3em; background-color:khaki"> 

    <h1> demonstration of google sign-in for php </h1> 

    <p> This is a working example of google sign in for a php website. Start reading <a href="https://developers.google.com/identit 
y/sign-in/web/devconsole-project">Google Sign-in For Websites</a>. In particular, link in your developers console.</p> 

    <p> In this javascript code, you only ever change one value above: 
     <pre> 
    &lt;meta name="google-signin-client_id" content="&lt;your value here&gt;.apps.googleusercontent.com"&gt; 
     </pre> 



    <h2> login button </h2> 

    <div class="g-signin2" data-onsuccess="onSignIn"></div> 
    <a href="#" onclick="signOut();">Sign out</a> 


    <div id="showresults"> <!-- not working suppression --> 

     <h2> results in javascript, not secure from server perspective </h2> 

     <form method="POST" action="googlereturn.php"> 
    <input id="fidtoken" type="hidden" name="idtoken" value="" /> 
    <input type="submit" value="Pass Results To PHP" style="font-size:xx-large;margin:1ex;" /> 
     </form> 

     <table id="showresults"> 
    <tr> <td>ID: </td> <td id="gid"></td> </tr> 
    <tr> <td>Name: </td> <td id="gname"></td> </tr> 
    <tr> <td>Img: </td> <td> <img id="gimg" /> </td> </tr> 
    <tr> <td>Email: </td> <td id="gemail"> </td> </tr> 
    <!-- <tr> <td>Token: </td> <td id="gtoken"> </td> </tr> --> 
    <tr> <td>Token URL: </td> <td id="gtokenurl"> </td> </tr> 
    <tr> <td>Status: </td> <td id="gstatus"> </td> </tr> 
     </table> 

    </div> 

    </body> 
</html> 

aus irgendeinem Grund kann ich die HTML-Ergebnisse nicht blinken aus der Existenz, wenn abgemeldet, aber das ist eine Schönheit Makel, die ignoriert werden kann.

der Empfänger php googlereturn.php Skript jetzt ist

<html> 
    <head> 
     <title> google php identification recipient </title> 
    </head> 

    <body style="margin:3em; background-color:khaki"> 

     <h1> google php identification recipient </h1> 

     <?php 

     echo "<pre> "; print_r($_POST); echo "</pre>"; 

     $checkendpoint= "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token="; 
     $checkurl= $checkendpoint.$_POST['idtoken']; 

     echo "<h2> google identity </h2>\n"; 

     $v=file_get_contents($checkurl); 

     echo "<pre>$v</pre>\n"; 

     ?> 

    <p>(This identity information was sent directly from <?= $checkendpoint ?> and thus can be trusted.)</p> 
</body> 
</html> 

, die es ist. Kaum zu glauben, dass dies mit einer Woche verbunden war, in der ich meinen Kopf gegen eine Wand schlug.

hoffe, es hilft anderen.

/iaw