Как реализовать на моем сайте «вход с помощью google»?

На моем сайте я хотел бы разрешить пользователям входить в систему с учетной записью Google. Я планирую использовать openid, но хочу разрешить вход через Google, потому что это дает больше преимуществ. Я заметил в прошлом несколько сайтов, которые имеют возможность входить в систему с учетной записью google (gmail) и IIRC, хотя они НЕ поддерживают openID (но я могу ошибаться).

Как мне реализовать "вход с помощью google"?


person Community    schedule 06.10.2009    source источник
comment
Вы можете использовать E-GOOGLE-OAUTH-BUTTON из EHTML: github.com/Guseyn/EHTML   -  person Guseyn Ismayylov    schedule 25.11.2019


Ответы (8)


Если вы планируете использовать OpenID, используйте его. Google уже является поставщиком OpenID 2.0.

Поставщик OpenID Google находится по адресу: https://www.google.com/accounts/o8/ud < / а>

(ПРИМЕЧАНИЕ: нет смысла посещать этот URI в вашем браузере, но он работает для OpenID.)

Это в первую очередь рассматривается на странице Accounts API, которая также касается OAuth и гибридных и проприетарные системы входа в систему. В зависимости от вашего сайта вы также можете использовать Мастер сообществ, который является контейнером OpenSocial, который внутренне использует OpenID для аутентификации.

Я, конечно, предвзято отношусь к Мастеру сообществ, поскольку я являюсь DPE для этого проекта, но вам, вероятно, лучше обслуживать напрямую через поставщика OpenID, если вы также не делаете вещи, связанные с социальным графом.

Изменение для 2012 года: вы хотите использовать OAuth 2.0 для входа . GFC закрывается .

person Bob Aman    schedule 06.10.2009
comment
инструкции на этой странице: developers.google.com/accounts/docs/OAuth2 найдите 'googles api console' для настройки ключа api и т. д. - person Daithí; 25.10.2012
comment
@topher OAuth 2.0 и OpenId Connect. - person Bob Aman; 14.11.2014

Возможно, вас заинтересует RPX, который представляет собой комплексное решение, позволяющее людям выбирать, к какому провайдеру идентификации они хотели бы обратиться. используйте для входа на свой сайт. Поддерживаются не только Google и OpenID, но и многие другие.

RPX заботится обо всех деталях взаимодействия с каждым поставщиком удостоверений и предоставляет вам общий API для работы.

person Greg Hewgill    schedule 06.10.2009
comment
Я использовал это, и его очень легко настроить с помощью сайта ASP.Net. Плюс это бесплатно! - person Michael La Voie; 07.10.2009
comment
Несмотря на то, что я пометил другой как правильный, я думаю, что пойду с вашим решением :) (Он просто выигрывает его, потому что изначально я хотел увидеть конкретный API Google) - person ; 08.10.2009
comment
Как парень, который написал другой ответ, я также согласен с тем, что RPX, вероятно, является лучшим способом на самом деле реализовать OpenID для большинства случаев использования. У него отличный пользовательский интерфейс, его легко установить и использовать. - person Bob Aman; 08.10.2009
comment
Если у вас более 2500 пользователей в год, вам придется покупать услугу. - person Michael Laffargue; 15.09.2013
comment
PRX не работает для клиентов, которые не должны использовать JavaScript. Вместо этого настоящий OpenID 2.0 работает без JavaScript как шарм. - person Tino; 03.04.2015

Интеграция входа через Google в ваше веб-приложение

Создайте проект Google Developers Console и идентификатор клиента.

Загрузите библиотеку Google Platform

Вы должны включить библиотеку Google Platform на свои веб-страницы, которые интегрируют Google Sign-In.

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

Укажите идентификатор клиента вашего приложения

Укажите идентификатор клиента, который вы создали для своего приложения, в Google Developers Console с помощью метаэлемента google-signin-client_id.

<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">

Примечание. Вы также можете указать идентификатор клиента своего приложения с помощью параметра client_id метода gapi.auth2.init ().

Добавить кнопку входа в Google

Самый простой способ добавить кнопку входа в Google на свой сайт - использовать автоматически отображаемую кнопку входа. С помощью всего нескольких строк кода вы можете добавить кнопку, которая автоматически настраивается для отображения соответствующего текста, логотипа и цветов для состояния входа пользователя и запрашиваемых вами областей.

Чтобы создать кнопку входа в Google с настройками по умолчанию, добавьте на страницу входа элемент div с классом g-signin2:

<div class="g-signin2" data-onsuccess="onSignIn"></div>

Другая информация. можно найти здесь


Другое возможное решение

Использование OAuth 2.0 для доступа к API Google

Протоколы аутентификации

Обзор OAuth 2.0

OpenID Connect

OAuth 2.0 для серверных веб-приложений

OAuth 2.0 для веб-приложений на JavaScript

OAuth 2.0 для мобильных и настольных приложений

person KhogaEslam    schedule 13.03.2017
comment
Есть ли способ выполнить основы входа в Google с помощью прямых HTTP-запросов, то есть без добавления https://apis.google.com/js/platform.js на мою страницу? - person Simon H; 27.07.2018
comment
Хорошо, у вас могут быть причины для этого, а как насчет копирования содержимого и добавления его на свой сайт? - person KhogaEslam; 29.07.2018
comment
также вы можете ознакомиться с этими шагами developers.google.com/identity/protocols/OAuth2 - person KhogaEslam; 29.07.2018

Я считаю, что вам нужен Google Accounts API.

person Pablo    schedule 06.10.2009
comment
когда вы нажимаете эту ссылку, найдите «консоль API Google», чтобы настроить ключ и т. д. - person Daithí; 25.10.2012

Думаю, вам нужен Мастер сообществ Google

edit: Нет, больше нет, так как он устарел.

person DanSingerman    schedule 06.10.2009

но я бы хотел разрешить вход через Google

В этом случае добавьте следующий код

HTML

 <div id="mySignin" onclick="login()"><img src="google_image_here.png" alt="google" style="cursor:pointer;height: 60px;width: 309px;"/></div>

JS

        <script type="text/javascript">
        function login() 
        {
          var myParams = {
            'clientid' : 'YOUR_CLIENT_ID.apps.googleusercontent.com',
            'cookiepolicy' : 'single_host_origin',
            'callback' : 'loginCallback',
            'approvalprompt':'force',
            'scope' : 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read'
          };
          gapi.auth.signIn(myParams);
        }

        function loginCallback(result)
        {
            if(result['status']['signed_in'])
            {
                var request = gapi.client.plus.people.get(
                {
                    'userId': 'me'
                });
                request.execute(function (resp)
                {
                    /* console.log(resp);
                    console.log(resp['id']); */
                    var email = '';
                    if(resp['emails'])
                    {
                        for(i = 0; i < resp['emails'].length; i++)
                        {
                            if(resp['emails'][i]['type'] == 'account')
                            {
                                email = resp['emails'][i]['value'];//here is required email id
                            }
                        }
                    }
                   var usersname = resp['displayName'];//required name
                });
            }
        }
        function onLoadCallback()
        {
            gapi.client.setApiKey('YOUR_API_KEY');
            gapi.client.load('plus', 'v1',function(){});
        }

            </script>

        <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.js?onload=onLoadCallback';
               var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
             })();
        </script>
person A J    schedule 29.01.2016
comment
Можете ли вы сказать, как передать параметр состояния вместе с запросом? - person Sachin HR; 28.08.2018

Вы можете изучить openId (http://openid.net/), который использует SO и поддерживается Google.

person jd.    schedule 06.10.2009
comment
Сказать кому-то посмотреть на openid.net для входа в систему - все равно что сказать кому-то, кто хочет чего-нибудь поесть, посмотреть в магазин рыболовных принадлежностей. Это просто не помогает. Период. - person Tino; 03.04.2015

Простые шаги для интеграции в Google SignIn:

  1. Сначала перейдите по этой ссылке (https://console.developers.google.com/)
  2. Выберите проект из раскрывающегося списка в левом верхнем углу. Если вы еще не создаете проект, пожалуйста, создайте проект

введите описание изображения здесь

  1. После создания проекта нажмите экран согласия OAuth и введите эти данные, такие как название приложения и логотип приложения. дополнительные данные, такие как URL-адрес домена, URL-адрес перенаправления

  2. Перейдите к учетным данным, щелкните раскрывающееся меню «Создать учетные данные» и щелкните «Идентификатор клиента Oauth». Заполните данные в форме  введите описание изображения здесь

  3. Запишите идентификатор клиента и секретный ключ для интеграции с API входа.

  4. Для интеграции API см. this. Для response и angular, поэтому доступно множество пакетов NPM для легкой настройки.

person Vimalraj    schedule 30.12.2019
comment
Важна ли также страница с частной политикой? - person Hello World; 29.07.2020
comment
этот комментарий, к сожалению, устарел и нуждается в обновлении :( - person StefaDesign; 26.03.2021