Я боролся с этим в течение нескольких часов и нуждаюсь в некоторой помощи. Я создал простое приложение, которое представляет пользователю кнопку «Войти с помощью Google» с угловым видом, который перенаправляет пользователя на страницу Google Oauth. Вот код контроллера, который вызывает функцию Логин() при нажатии кнопки:OAuth Token Response to Angular View (cookie)
angular.module('dashApp').controller('SigninCtrl', function ($scope) {
$scope.login=function() {
var client_id="191641883719-5eu80vgnbci49dg3fk47grs85e0iaf9d.apps.googleusercontent.com";
var scope="email";
var redirect_uri="http://local.host:9000/api/auth/google";
var response_type="code";
var url="https://accounts.google.com/o/oauth2/auth?scope="+scope+"&client_id="+client_id+"&redirect_uri="+redirect_uri+
"&response_type="+response_type;
window.location.replace(url);
};
});
редирект набор URI в моем проекте Google перенаправляет на страницу сервера для этого сервера страницы:
'use strict';
var _ = require('lodash');
var request = require('request');
var qs = require('querystring');
var fs = require('fs');
// Get list of auths
exports.google_get = function (req,res){
var code = req.query.code,
error = req.query.error;
if(code){
//make https post request to google for auth token
var token_request = qs.stringify({
grant_type: "authorization_code",
code: code,
client_id: "191641883719-5eu80vgnbci49dg3fk47grs85e0iaf9d.apps.googleusercontent.com",
client_secret: process.env.GOOGLE_SECRET,
redirect_uri: "http://local.host:9000/api/auth/google"
});
var request_length = token_request.length;
var headers = {
'Content-length': request_length,
'Content-type':'application/x-www-form-urlencoded'
};
var options = {
url:'https://www.googleapis.com/oauth2/v3/token',
method: 'POST',
headers: headers,
body:token_request
};
request.post(options,function(error, response, body){
if(error){
console.error(error);
}else{
//WHAT GOES HERE?
}
});
}
if(error){
res.status(403);
}
}
I «Могу успешно обменять код, возвращенный google для объекта токена аутентификации, и зарегистрировать его на терминале. Мне сказали, что я должен установить печенье с помощью:
res.setHeader('Content-Type', 'text/plain');
res.setCookie('SID','yes',{
domain:'local.host',
expires:0,
path:'/dashboard',
httpOnly:false
});
res.status(200);
res.end();
Последовал контроллера на странице я предписывающий пользователю, который проверяет сессию.
Что я делаю неправильно?
Я не понял, в чем проблема. – Mavlarn
Я понял, что мне нужно заставить угловой контроллер выполнить запрос получения на сервер для первоначальной повторной маршрутизации браузера - теперь работаем над этим. Я отправлю обновление кода, как только я закончил с этим. –