2016-08-06 39 views
0

Ich versuche, google account Login in die node.js Anwendung zu integrieren, die ich baue, und ich habe ein kleines Problem senden eine https Post Anfrage an Google API Gate.node js, make https post Anfrage an google api

Zuerst folgte ich dieser tutorial und es funktionierte in Ordnung, aber sie sagten darin, dass für die Backend-Verarbeitung von Google-Konto-ID, sollte dies tutorial tun. Ich hatte zu diesem Zeitpunkt Probleme. Ich wollte keine zusätzlichen Bibliotheken verwenden, nur native node.js-Funktionalität, um mich daran zu gewöhnen, wie es gemacht wurde.

Um das Konto im Backend zu validieren, muss eine Token-ID sicher an eine gegebene URL gesendet werden.

Dies ist der Client-Seite Code, der funktioniert:

var xhr = new XMLHttpRequest(); 
xhr.open('POST', 'https://www.googleapis.com/oauth2/v3/tokeninfo'); 
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
xhr.onload = function() { 
    console.log(xhr.responseText); 
}; 
xhr.send('id_token=' + token_id); 

Jetzt, als ich es mit NodeJS auf Server-Seite zu tun versucht, es hat nicht funktioniert. Ich habe versucht, mit dem Code i auf NodeJS docs gefunden:

var http = require('http'); 
var post_data = 'id_token=' + token_id; 

var post_options = { 
    host: 'googleapis.com', 
    port: '80', 
    path: '/oauth2/v3/tokeninfo', 
    method: 'POST', 
    headers: { 
     'Content-Type': 'application/x-www-form-urlencoded', 
    } 
}; 

var post_req = http.request(post_options, function(res) { 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
     console.log(chunk); 
    }); 
}); 

post_req.write(post_data); 
post_req.end(); 

Die Antwort von Google 404 Fehler war The requested URL /oauth2/v3/tokeninfo was not found on this server. That's all we know. was bedeutet, dass ich etwas falsch gemacht haben. Also meine Fragen sind:

  1. Wie kann ich meinen Code verbessern/beheben, so dass es ordnungsgemäße post https Anfrage ausführt?
  2. Woher weiß ich, dass es eine https-Anfrage (nicht http) sein wird?

Danke für jede Hilfe;)

+0

Zum einen verwenden Sie http anstelle von https auf der Knotenseite. Hast du versucht, das zu ändern? – mscdex

+0

Nun, ich habe nicht gefunden, wie man das ändert, oder wie man das überprüft. aber ich denke, es ist nicht das einzige Problem hier, ich denke, dass auch etwas mit der allgemeinen Anfrage Struktur falsch ist, wie der Fehler sagt Seite doest existiert. Ich weiß nicht, ob ich es richtig mache, deshalb habe ich das Beispiel der Client-Version mit einbezogen, um eine Idee zu bekommen, wie es aussehen sollte. – Mevia

+0

Um alles zu ändern, müssen Sie grundsätzlich 'http' durch' https' ersetzen und entweder 'port' weglassen oder auf' 443' ändern. – mscdex

Antwort

1

Abgesehen von dem Unterschied in der Protokoll (http vs https), Sie fehlt auch die www Sub-Domain im Hostnamen (wie das, was in Ihrem client- verwendet wird Seitenbeispiel). Ändern von host: 'googleapis.com' zu host: 'www.googleapis.com' sollte funktionieren.

+0

das löste das Problem. Also das 'https'-Modul aufrufen, den Port' 80 -> 443' ändern und 'www' zum Host hinzufügen, ist die endgültige Antwort. Danke, das ist eine Menge guter Arbeit. – Mevia