Google API-Zugriffstoken und Aktualisierungstoken

Einführung

Als ich neulich die Google-API verwendet habe, habe ich einen Fehler "Nicht gefunden" und einen Fehler "Bad Request" übersehen, sodass ich sie als Memo zusammenfassen werde.

Erstellen Sie ein Projekt über die Google-Konsole

https://console.developers.google.com/apis/dashboard

API-Anmeldeinformationen erstellen

image.png

1. OAuth-Client-ID

Wählen Sie diese Option, wenn der Benutzer der Autorisierung auf dem Bildschirm zustimmt image.png

Nach Eingabe des Anwendungstyps, des Namens und des genehmigten Umleitungs-URI wurden eine Client-ID und ein Client-Geheimnis generiert.

2. Dienstkontoschlüssel

Holen Sie sich Zugriffstoken im JSON-Format hinter den Kulissen ohne Bildschirmbedienung. Wählen Sie dies für die Stapelverarbeitung image.png

Laden Sie die Datei im JSON-Format herunter

Erhalten eines Autorisierungscodes

Stellen Sie Client und Scoop ein und greifen Sie über die URL zu

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&
 access_type=offline&
 include_granted_scopes=true&
 redirect_uri=http%3A%2F%2localhost:8080&
 response_type=code&
 client_id=Kunden-ID oben erhalten

Wenn Sie mit Google einverstanden sind, können Sie den Autorisierungscode von der URL erhalten. http://localhost:8080/?code=xxxxxxxxxxxx&scope=yyyyyyyyyyy

Zugriffstoken erhalten

Spezifikation

image.png

image.png

Punkt 1: POST-Methode. NG mit GET-Methode Punkt 2: Setzen Sie im Header "Content-Type: application / x-www-form-urlencoded". NG, wenn nicht gesetzt oder JSON gesetzt ist.

Beispielcode

Test.java


        String url = "https://www.googleapis.com/oauth2/v4/token";

		CloseableHttpClient httpclient = HttpClients.createDefault();

		HttpPost request = new HttpPost(url);
		List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
		parameters.add(new BasicNameValuePair("code", authorizationCode)); //Autorisierungscode oben erhalten
		parameters.add(new BasicNameValuePair("client_id", oAuthClientId)); //Client-ID der API-Anmeldeinformationen auf der Konsole
		parameters.add(new BasicNameValuePair("client_secret", oAuthClientSecret)); //Client-Geheimnis der API-Anmeldeinformationen auf der Konsole
		parameters.add(new BasicNameValuePair("redirect_uri", "http://localhost:8080")); //Genehmigter Umleitungs-URI, den Sie festgelegt haben
		parameters.add(new BasicNameValuePair("grant_type", "authorization_code")); //Fest

		HttpEntity entity = new UrlEncodedFormEntity(parameters);
		request.setEntity(entity);
		
		request.setHeader("Content-Type", "application/x-www-form-urlencoded");

		CloseableHttpResponse response = httpclient.execute(request);
		if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
		    String result = EntityUtils.toString(response.getEntity(), "UTF-8");
		    System.out.println(result);
		}
		response.close();

Antwortfeld: image.png

Nachdem Sie über das Zugriffstoken verfügen, können Sie die Daten von Google abrufen. Dies ist ein Beispiel für das Festlegen eines Zugriffstokens im Header. curl -H "Authorization: Bearer <access_token>" https://www.googleapis.com/drive/v2/files

Zugriff auf Token-Update mit Aktualisierungstoken

Das Zugriffstoken hat ein Ablaufdatum. Nach einer bestimmten Zeit (60 Minuten) wird es ungültig. Zu diesem Zeitpunkt erhalten Sie möglicherweise erneut den Autorisierungscode. Es ist üblich, Zugriffstoken mithilfe von Aktualisierungstoken erneut auszugeben, da dies für den Benutzer umständlich ist.

Spezifikation

Es ist dasselbe wie ein Zugriffstoken. image.png

image.png

Beispielcode

Test.java


        String url = "https://www.googleapis.com/oauth2/v4/token";

		HttpPost request = new HttpPost(url);
		List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
		parameters.add(new BasicNameValuePair("refresh_token", "xxxxxxx")); //Aktualisieren Sie das Token, das Sie haben
		parameters.add(new BasicNameValuePair("client_id", oAuthClientId)); //Client-ID der API-Anmeldeinformationen auf der Konsole
		parameters.add(new BasicNameValuePair("client_secret", oAuthClientSecret)); //Client-Geheimnis der API-Anmeldeinformationen auf der Konsole
		parameters.add(new BasicNameValuePair("redirect_uri", "http://localhost:8080")); //Genehmigter Umleitungs-URI, den Sie festgelegt haben
		parameters.add(new BasicNameValuePair("grant_type", "refresh_token")); //Fest

		HttpEntity entity = new UrlEncodedFormEntity(parameters);
		request.setEntity(entity);
		
		request.setHeader("Content-Type", "application/x-www-form-urlencoded");

		CloseableHttpClient httpclient = HttpClients.createDefault();
		CloseableHttpResponse response = httpclient.execute(request);
		if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
		    String result = EntityUtils.toString(response.getEntity(), "UTF-8");
		    System.out.println(result);
		}
		response.close();

Dies ist ein Antwortbeispiel. image.png

Wie im Beispiel gezeigt, gibt es kein Aktualisierungstoken. Wenn das Aktualisierungstoken also ebenfalls ungültig ist, müssen Sie zunächst den Autorisierungscode abrufen.

Referenz-URL: https://developers.google.com/identity/protocols/OAuth2WebServer

das ist alles

Recommended Posts

Google API-Zugriffstoken und Aktualisierungstoken
Gewähren Sie mit dem Befehl curl ein Zugriffstoken und POSTEN Sie die API
Holen Sie sich ein Zugriffstoken für die Pocket-API
Integration von Google App Engine-Datenspeicher und Such-API
Guru Navi API-Zugriffsmethode
Einfache Buchregistrierung mit Google Books API und Rails
Sprachtranskriptionsverfahren mit Python und Google Cloud Speech API
[LINE Messaging API] Geben Sie das Kanalzugriffstoken v2.1 in Python aus
Anfänger der Google Maps API und der Twitter API haben "Tweet Map" erstellt.
Zabbix API dies und das
Greifen Sie mit Python auf Google Drive zu
Google Drive API-Tipps (Python)
Erhalten Sie Conversions und Einnahmen mit der Google Analytics-API und melden Sie sich bei Slack
[Google Maps API] Karte wird nicht angezeigt und wird leer [Rails]
Ausgabe von Firebase-Authentifizierungstoken in Python und Token-Validierung mit Fast API
[Ruby on Rails] Anzeigen und Fixieren von GoolgeMAP mithilfe der Google-API
Ich habe versucht, die Docomo-Spracherkennungs-API und die Google Speech-API in Java zu verwenden