Как получить / отобразить информацию пользователя из Google Sign-In For Web? - PullRequest
0 голосов
/ 10 апреля 2020

Я новичок в веб-программировании.

Ранее я успешно создал скрипт входа в Google с помощью PHP. Вот мой код:

<?php
require_once __DIR__.'/vendor/autoload.php';

session_start();

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
  $profile = $_SESSION['access_profile'];
  echo "{$profile['displayName']}.</h2>";
} else {
  echo "silakan login menggunakan akun Google";
  echo "<a href='auth.php'><center><img src='google.png' style='max-width:70%;height:auto;'></center></a>";
}
?>

И:

<?php
require_once __DIR__.'/vendor/autoload.php';

session_start();

$client = new Google_Client();
$client->setAuthConfigFile('client_secret.json');
$client->setRedirectUri("https://madzae.id/auth.php");
$client->setScopes(array(
    "https://www.googleapis.com/auth/userinfo.email",
    "https://www.googleapis.com/auth/userinfo.profile",
    "https://www.googleapis.com/auth/plus.me"
));

if (!isset($_GET['code'])) {
  $auth_url = $client->createAuthUrl();
  header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
  $client->authenticate($_GET['code']);
  $_SESSION['access_token'] = $client->getAccessToken();

  try {
      // profile
      $plus = new Google_Service_Plus($client);
      $_SESSION['access_profile'] = $plus->people->get("me");
  } catch (\Exception $e) {
      echo $e->__toString();

      $_SESSION['access_token'] = "";
      die;
  }

  header('Location:https://madzae.id/');
}
?>

Но, поскольку я использую другой домен, этот код не работает. Google прекратил использование Google API.

Google использует новую систему входа в систему, и вот код с официальной страницы Google. И я просто копирую и вставляю свой идентификатор Secret на свою страницу, скажем: index. php.

<html lang="en">
  <head>
    <meta name="google-signin-scope" content="profile email">
    <meta name="google-signin-client_id" content="66xxx.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>

На странице отображается кнопка входа в систему и указывается, какая учетная запись выбрана для входа. У меня вопрос, как отобразить данные пользователя? В PHP и на той же странице индекс. php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...