L'autre jour, lorsque j'ai utilisé l'API de Google, j'ai oublié une erreur Not Found et une erreur Bad Request, je vais donc les résumer sous forme de mémo.
https://console.developers.google.com/apis/dashboard
Sélectionnez ceci si l'utilisateur consent à l'autorisation à partir de l'écran
Après avoir entré le type d'application, le nom et l'URI de redirection approuvé, un ID client et un secret client ont été générés.
Obtenez un jeton d'accès au format JSON dans les coulisses sans opération d'écran. Sélectionnez ceci pour le traitement par lots
Téléchargez le fichier au format JSON
Définir le client, le scoop et l'accès à partir de l'URL
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=ID client obtenu ci-dessus
Si vous êtes d'accord avec Google, vous pouvez obtenir le code d'autorisation à partir de l'URL.
http://localhost:8080/?code=xxxxxxxxxxxx&scope=yyyyyyyyyyy
Point 1: méthode POST. NG avec méthode GET Point 2: Définissez "Content-Type: application / x-www-form-urlencoded" dans l'en-tête. NG si non défini ou JSON est défini.
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)); //Code d'autorisation obtenu ci-dessus
parameters.add(new BasicNameValuePair("client_id", oAuthClientId)); //ID client des informations d'identification de l'API sur la console
parameters.add(new BasicNameValuePair("client_secret", oAuthClientSecret)); //Client secret des informations d'identification de l'API sur la console
parameters.add(new BasicNameValuePair("redirect_uri", "http://localhost:8080")); //URI de redirection approuvé que vous avez défini
parameters.add(new BasicNameValuePair("grant_type", "authorization_code")); //Fixé
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();
Champ de réponse:
Maintenant que vous avez le jeton d'accès, vous pouvez obtenir les données de Google.
Ceci est un exemple de définition d'un jeton d'accès dans l'en-tête.
curl -H "Authorization: Bearer <access_token>" https://www.googleapis.com/drive/v2/files
Le jeton d'accès a une date d'expiration. Après une certaine période (60 minutes), il devient invalide. À ce stade, vous pouvez obtenir à nouveau le code d'autorisation, Il est courant de réémettre des jetons d'accès à l'aide de jetons d'actualisation, car cela est fastidieux pour l'utilisateur.
C'est la même chose qu'un jeton d'accès.
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")); //Jeton d'actualisation que vous avez
parameters.add(new BasicNameValuePair("client_id", oAuthClientId)); //ID client des informations d'identification de l'API sur la console
parameters.add(new BasicNameValuePair("client_secret", oAuthClientSecret)); //Client secret des informations d'identification de l'API sur la console
parameters.add(new BasicNameValuePair("redirect_uri", "http://localhost:8080")); //URI de redirection approuvé que vous avez défini
parameters.add(new BasicNameValuePair("grant_type", "refresh_token")); //Fixé
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();
Ceci est un exemple de réponse.
Comme indiqué dans l'exemple, il n'y a pas de jeton d'actualisation, donc si le jeton d'actualisation est également invalide, vous devrez recommencer à partir de l'obtention du code d'autorisation.
URL de référence: https://developers.google.com/identity/protocols/OAuth2WebServer
c'est tout
Recommended Posts