Ответ 1
Как заявил Burcu Dogan, Google выпустила официальную клиентскую библиотеку для доступа к API Google. Его можно найти здесь: https://github.com/google/google-api-nodejs-client/
Я пытаюсь подключиться к 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.
Любое предложение?
Как заявил Burcu Dogan, Google выпустила официальную клиентскую библиотеку для доступа к API Google. Его можно найти здесь: https://github.com/google/google-api-nodejs-client/
Я бы предложил использовать существующие модули для этой задачи. everyauth - это модуль, который позволяет не только oauth2 обращаться к Google, но и к большинству других платформ, которые предлагают его также. Я использую это для доступа Twitter для своих проектов. Он также имеет интеграцию express
.
Вы можете найти больше альтернатив в Node Toolbox. Паспорт приходит на ум.
У меня были хорошие результаты с Passport (не относящимся к схеме проверки подлинности MS!). Сначала я попробовал everyauth, но паспорт IMO лучше подходит для конвенций expressjs.
Здесь есть готовый к использованию поставщик авторизации Google: http://passportjs.org/guide/google/
Вы можете проверить мой проект Node.JS + Google Calendar здесь: https://github.com/berryboy/google-calendar
У меня также есть несколько примеров использования google oauth.