Ich bin sehr neu zu eckig, so dass mein Wissen auf Tutorials basiert und selbst dann ist es nicht erfolgreich. Ich muss mit einem Google-Konto authentifizieren. Das funktioniert, ich bekomme ein Token, mit dem meine api-Anrufe autorisiert werden können. Aber nach dem Login sollte das Popup-Fenster geschlossen werden und ich sollte auf die Homepage weitergeleitet werden. Dies funktioniert nicht.Satellizer dann nicht nach Authentifizierung
das ist mein Controller
angular.module('MyApp').controller('loginController', ['$scope', '$auth', '$location','loginService', loginController]);
function loginController($scope, $auth, $location, loginService) {
$scope.authenticate = function(provider) {
$auth.authenticate(provider).then(function(data) {
loginService.saveToken(data.data.token);
console.log('You have successfully signed in with ' + provider + '!');
$location.path('http://localhost/#/home');
});
};
};
in app.js ich meine Konfiguration haben. Dies ist nicht meine Arbeit, sondern ein Freund, der wie ich ein Praktikant ist, er ist verantwortlich für eine mobile Anwendung, wo er die gleiche Funktion verwendet, um seinen Token zu bekommen, und es funktioniert.
authProvider.google({
clientId: CLIENT_ID,
redirectUri: 'http://localhost:3000/api/users/signIn'
});
$authProvider.storage = 'localStorage'; // or 'sessionStorage'
$authProvider.loginRedirect = 'http://localhost/#/home';
Dies ist der Controller in Knoten, an dem die URL (Google Entwickler-Konsole) umgeleitet wird
router.get('/signIn', function(req, res) {
//console.log(req);
var code = req.query.code;
oauth2Client.getToken(code, function(err, tokens) {
if (!err) {
https.get("https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=" + tokens.access_token, function(response) {
// Continuously update stream with data
var body = '';
response.setEncoding('utf8');
response.on('data', function(d) {
body += d;
});
// Data fetched
response.on('end', function() {
var parsed = JSON.parse(body);
// Check if client_id is from the right app
if (parsed.issued_to == '343234242055-vd082vo0o8r8lmfvp1a973736fd98dht.apps.googleusercontent.com') {
User.getGoogleId(parsed.user_id, function(err, user) {
if (err) {
res.status(500).send({
message: 'not authorized app'
});
}
// No user returned, create one
if (!user) {
// Request user info
oauth2Client.setCredentials(tokens);
plus.people.get({
userId: 'me',
auth: oauth2Client
}, function(err, plusUser) {
if (err) res.status(500).send({
message: 'not authorized app'
});
else {
// Create new user
User.create(plusUser.name.givenName, plusUser.name.familyName, (plusUser.name.givenName + "." + plusUser.name.familyName + "@cozmos.be").toLowerCase(), parsed.user_id, function(err, newUser) {
if (err) res.status(500).send({
message: 'not authorized app'
});
else {
res.statusCode = 200;
return res.send({
response: 'Success',
id: user._id,
firstName: user.firstName,
lastName: user.lastName,
email: user.email,
token: tokens.access_token
});
}
});
}
});
} else {
// Return user
res.statusCode = 200;
return res.send({
response: 'Success',
id: user._id,
firstName: user.firstName,
lastName: user.lastName,
email: user.email,
token: tokens.access_token
});
}
});
}
// if not right app, return unauthorized response
else {
res.status(500).send({
message: 'not authorized app'
});
}
});
});
}
});
});
Also ich anmelden, fragte ich die Erlaubnis erhalten, die Anwendung zu geben, meine Kontoinformationen zu verwenden, Ich bekomme eine JSON-Antwort, wo ich meinen Namen, E-Mail und Token sehen kann, und das ist es