Подтвердить аккаунт Gmail и получить основную информацию о профиле - PullRequest
0 голосов
/ 04 июня 2019

Есть ли способ проверить существование учетной записи и получить основную информацию об учетной записи Gmail, такую ​​как имя и URL фотографии, используя только электронную почту?

Ранее можно было получить аккаунт photoUrl, используя следующую конечную точку:

http://picasaweb.google.com/data/entry/api/user/<hereYourUserIdOrYourEmail>?alt=json

но он был закрыт.

1 Ответ

1 голос
/ 10 июня 2019

Вы не можете получить доступ к этой информации с помощью gmail-api. Если вы являетесь администратором домена g Suite, вы можете использовать API каталога для получения этой информации.

Если приложение не предназначено для определенного домена, вы можете внедрить google oauth2 с JavaScript во внешнем интерфейсе, пользователь должен будет пройти аутентификацию, и таким образом вы сможете получить доступ к основной информации. Вам нужно создать проект на cloud.google.com и получить учетные данные (в коде необходим clientID). Более подробное объяснение здесь:

https://developers.google.com/identity/sign-in/web/sign-in

Пример реализации (отсутствует только clientID):

 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="google-signin-client_id" content="#clientId">
    <title>Oauth2 web</title>

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

    <!-- Jquery library to print the information easier -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>

    <!-- Bootstrap library for the button style-->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
<div id="profileinfo">
</div>
<div class="g-signin2" data-onsuccess="onSignIn"></div>

<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()); // This is null if the 'email' scope is not present.

              $("#profileinfo").append("<h2>Sup " + profile.getName() + ", welcome home my friend</h2>");
              $("#profileinfo").append("<img style='width:250px;height:250px' src='" + profile.getImageUrl() + "'><br><br>");
              $("#profileinfo").append("<p>Your email is: " + profile.getEmail() + "</p>");

            }
        </script>

<button type="button" class="btn btn-danger" onclick="signOut();">Sign out</button>

<script>
            function signOut() {
               var auth2 = gapi.auth2.getAuthInstance();
               auth2.signOut().then(function () {
                 console.log('User signed out.');
               $("#profileinfo").empty();
               $("#profileinfo").append("<h2>Goodbye old friend</h2>");
               });
            }
        </script>
</body>
</html>
...