Подтвердить что ты не робот

Аутентификация Google с помощью nodejs

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

Я установил url, требуемый oauth2, и, похоже, он работает (если я вставляю его в свой веб-браузер, он перенаправляет меня на страницу авторизации Google). Я видел этот пост, который, казалось, отвечал на мой вопрос, но я не могу обработать часть экспресс-кода.

Вот код, который я использую:

https.get(options, function(res) {
    var retrieved_data = '';
    res.on('data', function(data) { retrieved_data += data; });
    res.on('end', function() { 
        // FIXME
        client_response.writeHead(302, {"Content-Type" : "text/plain", "Location" : res.headers.location});
        client_response.end(retrieved_data);    
    });
});

Но этот метод возвращает ошибку на моей странице клиента (поднятой полем ошибки моего запроса ajax). Если я изменю код HTTP до 200 без информации "Местоположение", он отобразит на клиенте страницу "Перемещено временно" с кнопкой, которая перенаправляет меня на страницу авторизации API Google.

Любое предложение?

4b9b3361

Ответ 1

Как заявил Burcu Dogan, Google выпустила официальную клиентскую библиотеку для доступа к API Google. Его можно найти здесь: https://github.com/google/google-api-nodejs-client/

Ответ 2

Я бы предложил использовать существующие модули для этой задачи. everyauth - это модуль, который позволяет не только oauth2 обращаться к Google, но и к большинству других платформ, которые предлагают его также. Я использую это для доступа Twitter для своих проектов. Он также имеет интеграцию express.

Вы можете найти больше альтернатив в Node Toolbox. Паспорт приходит на ум.

Ответ 3

У меня были хорошие результаты с Passport (не относящимся к схеме проверки подлинности MS!). Сначала я попробовал everyauth, но паспорт IMO лучше подходит для конвенций expressjs.

Здесь есть готовый к использованию поставщик авторизации Google: http://passportjs.org/guide/google/

Ответ 4

Вы можете проверить мой проект Node.JS + Google Calendar здесь: https://github.com/berryboy/google-calendar

У меня также есть несколько примеров использования google oauth.