Как реализовать Google Oauth AJAX? - PullRequest
0 голосов
/ 17 ноября 2018

Я работаю над проектом и хочу реализовать кнопку входа в Google и Facebook.Первое, что я сделал, это зашел к официальному руководству и протестировал этот простой код, и он работает.

<html lang="en">
  <head>
    <meta name="google-signin-scope" content="profile email">
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
    <script src="https://apis.google.com/js/platform.js" async defer></script>
  </head>
  <body>
    <div class="g-signin2" data-onsuccess="onSignIn" data-theme="dark"></div>
    <script>
      function onSignIn(googleUser) {
        // Useful data for your client-side scripts:
        var profile = googleUser.getBasicProfile();
        console.log("ID: " + profile.getId()); // Don't send this directly to your server!
        console.log('Full Name: ' + profile.getName());
        console.log('Given Name: ' + profile.getGivenName());
        console.log('Family Name: ' + profile.getFamilyName());
        console.log("Image URL: " + profile.getImageUrl());
        console.log("Email: " + profile.getEmail());

        // The ID token you need to pass to your backend:
        var id_token = googleUser.getAuthResponse().id_token;
        console.log("ID Token: " + id_token);
      };
    </script>
  </body>
</html>

Теперь я хочу соединить данные, полученные с моей базой данных, и так как я получил данные с помощью javascript, я отправляю их с AJAX в общую функцию с PHP, которая принимает 3 параметра (электронная почта, пароль, метод).В методе я ожидаю, что одно из этих трех значений («GOOGLE», «FACEBOOK», «FORM») будет знать, какое это было соединение.С помощью «GOOGLE» я отправляю id_token вместо пароля.

function onSignIn(googleUser) {
  var profile = googleUser.getBasicProfile();
  var posting = $.post(
    "ajax.php",
    {
      "AjaxPostQuery": "Connect", 
      "ConnLogin": profile.getEmail(), 
      "ConnPWD": googleUser.getAuthResponse().id_token,
      "method" : "GOOGLE"
    }
  );
  posting.done(function(data) {
    console.log(data);
    $("#connectBox").empty().append(data);
    if(data === ""){
      $("#connectBox").empty().append("You are connected");
      location.reload();
    }
  });
}

Вопросы

  1. Должен ли я повторно реализовать протокол Oauth с помощью php, чтобы проверить правильность электронной почты и id_tokenили нет?
  2. Могу ли я просто доверять данным, полученным с помощью AJAX (в этом случае любой может переслать данные с консоли)
  3. Я просто идиот и что-то пропустил?
  4. Есть конкретные данные для хранения в базе данных и просто их сравнить?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...