Прозрачный пример / документация о том, как использовать логин Google для моего веб-приложения - PullRequest
4 голосов
/ 02 февраля 2012

Я поддерживаю старое веб-приложение, написанное на C ++ и javascript. Меня попросили добавить аутентификацию для входа в Facebook, Google и Twitter.

Бит Фейсбука прошел хорошо. На сайте разработчиков Facebook http://developers.facebook.com/docs/reference/javascript/ я обнаружил простой код JavaScript, который добавил на свою страницу входа. Затем я изменил Cgi-программу входа в систему, чтобы распознавать обратные вызовы из Facebook и регистрировать пользователя, используя его адрес электронной почты (который уже хранится в файле).

Я застрял с битом Google. Сначала я копался на сайте Google, но не смог найти простых примеров. Меня направили в библиотеку libopkele C ++, но я не могу найти никаких инструкций по ее использованию (и я подозреваю, что это не то, что мне нужно). Затем я нашел что-то под названием Google Friend Connect http://code.google.com/apis/friendconnect/docs/code.html (что, к сожалению, говорит о том, что оно устарело). Это содержало хороший пример JavaScript, который я поместил на свой сайт. Он предоставляет кнопку с надписью «Войти», а когда вы нажимаете на нее, появляется окно с запросом вашего адреса электронной почты. Вы заполняете адрес, он говорит: «Подключение к вашему IDP», затем «Перенаправление на ваш IDP», после чего во всплывающем окне появляется моя страница после входа в систему.

Очевидно, что я не хочу этого - я хочу, чтобы оно появилось в исходном окне, где они нажимали кнопку «Войти».

Вот мой JavaScript со страницы входа в систему:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/googleapis/0.0.4/googleapis.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/jsapi"></script>
<script type="text/javascript">
  google.load("identitytoolkit", "1", {packages: ["ac"], language:"en"});
</script>
<script type="text/javascript">
  $(function() {
    window.google.identitytoolkit.setConfig({
        developerKey: "<I put my developer key here>",
        companyName: "<I put my company name here>",
        callbackUrl: "http://www.mywebsite.com/cgi-bin/login.cgi",
        realm: "",
        userStatusUrl: "http://http://www.mywebsite.com/cgi-bin/loginstatus.cgi",
        loginUrl: "http://http://www.mywebsite.com/cgi-bin/login.cgi",
        signupUrl: "http://http://www.mywebsite.com/cgi-bin/login.cgi",
        homeUrl: "http://www.mywebsite.com",
        logoutUrl: "http://http://www.mywebsite.com/cgi-bin/logout.cgi",
        idps: ["Gmail", "GoogleApps", "Yahoo"],
        tryFederatedFirst: true,
        useCachedUserStatus: false
    });
    $("#navbar").accountChooser();
  });
</script>
<div id="navbar"></div>

Я считаю, что мой userStatusUrl никогда не вызывается. Вызывается callbackUrl, но я не уверен, что с него вернуть. Кажется, все, что я возвращаю, просто отображается на странице. Я где-то видел проходящую ссылку на возвращение элемента json, содержащего {"зарегистрированный: true}, но это тоже не сработало (вот точный текст, который я возвратил из своего скрипта cgi):

Content-Type: application/json
Content-Length: 20

{"registered" : true}

Любая помощь или указатели на простую реализацию приветствуются. (PHP-скрипт, использующий внешние библиотеки, не сильно поможет!)

Ответы [ 2 ]

1 голос
/ 06 сентября 2012

Вы смотрели в Google OpenID?

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

https://developers.google.com/accounts/docs/OpenID

0 голосов
/ 10 сентября 2012

В конце концов, я использовал rpxnow.com , который обеспечивает простой в использовании вход в систему через выбор провайдеров с использованием одного простого, хорошо документированного интерфейса.

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