Lassen Sie mich einen alternativen Weg zu Pinoyyids hervorragender Antwort hinzufügen (was bei mir nicht funktioniert hat - knallende Umleitungsfehler).
Anstelle von OAuthPlayground können Sie auch die HTTP-REST-API direkt verwenden. Der Unterschied zu Pinoyyids Antwort besteht also darin, dass wir die Dinge vor Ort erledigen. Befolgen Sie die Schritte 1 bis 3 aus Pinoyyids Antwort. Ich werde sie zitieren:
- Erstellen Sie das Google-Konto (z. B. my.drive.app@gmail.com) - oder überspringen Sie diesen Schritt, wenn Sie ein vorhandenes Konto verwenden.
- Verwenden Sie die API-Konsole, um die mydriveapp zu registrieren ( https://console.developers.google.com/apis/credentials/oauthclient?project=mydriveapp oder einfach https://console.developers.google.com/apis/ ).
- Erstellen Sie einen neuen Satz von Anmeldeinformationen (NB OAuth-Client-ID, nicht Dienstkontoschlüssel, und wählen Sie dann "Webanwendung" aus der Auswahl aus).
Fügen Sie jetzt anstelle des Spielplatzes Folgendes zu Ihren Anmeldeinformationen hinzu:
Autorisierte JavaScript-Quellen: http: // localhost (Ich weiß nicht, ob dies erforderlich ist, aber mache es einfach.)
Autorisierte Umleitungs-URIs: http: // localhost: 8080
Screenshot:
Stellen Sie sicher, dass Sie Ihre Änderungen tatsächlich über die blaue Schaltfläche unten speichern !
Jetzt möchten Sie wahrscheinlich eine GUI verwenden, um Ihre HTTP-Anforderungen zu erstellen. Ich habe Schlaflosigkeit benutzt, aber du kannst mit Postman gehen oder CURL gehen. Ich empfehle Insomnia, da Sie damit problemlos die Einwilligungsbildschirme durchgehen können.
Erstellen Sie eine neue GET- Anforderung mit den folgenden Parametern:
URL: https://accounts.google.com/o/oauth2/v2/auth
Query Param: redirect_uri=http://localhost:8080
Query Param: prompt=consent
Query Param: response_type=code
Query Param: client_id=<your client id from OAuth credentials>
Query Param: scope=<your chosen scopes, e.g. https://www.googleapis.com/auth/drive.file>
Query Param: access_type=offline
Wenn das Tool Ihrer Wahl die URL-Codierung nicht automatisch verarbeitet, stellen Sie sicher, dass Sie es selbst richtig machen.
Richten Sie vor dem Auslösen Ihrer Anfrage einen Webserver zum Abhören ein http://localhost:8080
. Wenn Sie Node und Npm installiert haben npm i express
, erstellen Sie Folgendes index.js
:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('ok');
console.log(req)
});
app.listen(8080, function () {
console.log('Listening on port 8080!');
});
Und führen Sie den Server über node index.js
. Ich empfehle, entweder nicht das gesamte req
Objekt zu protokollieren oder node index.js | less
die vollständige Ausgabe auszuführen, da dies sehr umfangreich ist.
Auch für andere Sprachen gibt es sehr einfache Lösungen. Verwenden Sie beispielsweise PHPs integrierten Webserver auf 8080 php -S localhost:8080
.
Feuern Sie nun Ihre Anfrage ab (in Insomnia) und Sie sollten mit dem Login aufgefordert werden:
Melden Sie sich mit Ihrer E-Mail-Adresse und Ihrem Passwort an und bestätigen Sie den Zustimmungsbildschirm (sollte die von Ihnen gewählten Bereiche enthalten).
Gehen Sie zurück zu Ihrem Terminal und überprüfen Sie die Ausgabe. Wenn Sie das Ganze protokolliert haben, scrollen Sie nach unten (z. B. pgdown in weniger), bis Sie eine Zeile mit sehen code=4/...
.
Kopieren Sie diesen Code. Es ist Ihr Autorisierungscode, den Sie gegen ein Zugriffs- und Aktualisierungstoken eintauschen möchten. Kopieren Sie nicht zu viel - wenn es ein kaufmännisches Und &
gibt, kopieren Sie es nicht oder irgendetwas danach. &
begrenzt Abfrageparameter. Wir wollen nur das code
.
Richten Sie nun eine HTTP-POST-Anforderung ein, die auf eine https://www.googleapis.com/oauth2/v4/token
als Formular-URL codierte URL verweist . In Insomnia können Sie einfach darauf klicken - in anderen Tools müssen Sie den Header möglicherweise selbst festlegen Content-Type: application/x-www-form-urlencoded
.
Fügen Sie die folgenden Parameter hinzu:
code=<the authorization code from the last step>
client_id=<your client ID again>
client_secret=<your client secret from the OAuth credentials>
redirect_uri=http://localhost:8080
grant_type=authorization_code
Stellen Sie erneut sicher, dass die Codierung korrekt ist.
Feuern Sie Ihre Anfrage ab und überprüfen Sie die Ausgabe von Ihrem Server. In der Antwort sollte ein JSON-Objekt angezeigt werden:
{
"access_token": "xxxx",
"expires_in": 3600,
"refresh_token": "1/xxxx",
"scope": "https://www.googleapis.com/auth/drive.file",
"token_type": "Bearer"
}
Sie können das access_token
sofort verwenden, es ist jedoch nur eine Stunde gültig. Beachten Sie das Aktualisierungstoken. Dies ist diejenige, die Sie jederzeit * gegen ein neues Zugriffstoken eintauschen können.
*
Sie müssen den Vorgang wiederholen, wenn der Benutzer sein Passwort ändert, den Zugriff widerruft, 6 Monate lang inaktiv ist usw.
Glückliche OAuthing !