2016-06-06 6 views
0

Ich habe ein Formular auf einer Website, die meinen Kalender überprüfen muss, um zu sehen, welche Zeiten verfügbar sind, und später, wenn es gesendet wird, wird es eine E-Mail senden.Wie verwende ich Google APIs als spezifische Benutzerserverseite? Node.js

Ich habe ein Dienstkonto in der API-Konsole erstellt, aber ich habe keine Ahnung, wie ich ihm Zugriff auf mein Konto gewähren kann.

Hier ist, was ich bisher habe, versuchen, Etiketten meines Google Mail-Kontos als Test aufzulisten.

var google = require('googleapis'); 
var gmail = google.gmail('v1'); 

var key = require('../client_secret.json'); 

var authClient = new google.auth.JWT(
    key.client_email, 
    null, 
    key.private_key, 
    ['https://mail.google.com/'], 
    '****@gmail.com'); 

authClient.authorize(function (err, tokens) { 
    if (err) { 
    return console.log(err); 
    } 

    gmail.users.labels.list({ 
    auth: authClient, 
    userId: '****@gmail.com' 
    }, function (err, resp) { 
    if (err) { 
     return console.log(err); 
    } 

    console.log(resp); 
    }); 
}); 

Und wenn ich das Skript ausführen, erhalte ich:

[Error: unauthorized_client] 

Edit:

Ich habe auch einen anderen Authentifizierungsablauf mit oauth versucht, wo es Sie zu den typischen Erlaubnis Bildschirm rufen zu fragen Sie erlauben Zugriff für "Projektname" zu "welchen Bereichen Sie auch setzen". Dann kann ich das Zugriffstoken verwenden, um Anfragen zu stellen und alles ist gut ... aber das fühlt sich nicht richtig an, weil ich niemals möchte, dass ein anderer Benutzer autorisiert wird. Ich könnte eine Route verwenden, um die "App" einmal zu autorisieren und dann diese Seite zu deaktivieren, damit sie nicht wieder aufgerufen werden kann ... Es fühlt sich irgendwie hack-y an.

Antwort

0

Ich habe mein Problem teilweise gelöst; zumindest habe ich das Beispiel in meiner Frage zum arbeiten bekommen.

In der Developer Console musste ich mein Dienstkonto bearbeiten und ein Kästchen aktivieren, um "Domänenweite Delegierung" zu aktivieren.

Sie gehen zu Ihren Service-Konten, klicken Sie auf das kleine 3-Punkt-Menü-Symbol auf der rechten Seite Ihres Dienstkontos, klicken Sie auf Bearbeiten und im Popup-Dialogfeld gibt es ein Kontrollkästchen, das Sie überprüfen müssen.

Ich hatte zuvor etwas über Domain-weite Delegierung gesehen, aber in diesem Beispiel sagten sie, dass Sie zu Ihrem Google Apps-Konto gehen sollten, das ich nicht habe, also dachte ich, dass es nichts mit mir zu tun hat, aber nach Basteln In der Entwicklerkonsole habe ich festgestellt, dass das Kontrollkästchen und das obige Google Mail-Beispiel funktioniert, sowie andere Teile der Google Mail-API, einschließlich des Lesens von Nachrichten aus meinem Posteingang.

Allerdings habe ich versucht, eine Anfrage an die Kalender-API, und ich bekomme einen Fehler, aber ich denke, dass für eine andere Frage ruft.

Verwandte Themen