Je suis désolé, je ne me suis pas senti bien et j'ai eu du temps libre. Dans l'article précédent, nous avons appris comment obtenir une adresse numérique Japan Post (digi-ad) et l'utiliser dans l'application de création d'étiquettes d'expédition fournie par Japan Post. Cette fois, nous allons essayer de l'obtenir via l'API. Après tout,Page « API Code postal/Adresse numérique »Comme il prend en charge OAuth 2.0 et OpenID Connect, il n’y a pas d’autre choix que de le faire.

Obtenez Yu-ID Biz
Désormais, pour accéder à l'API Yu-ID, vous devez vous inscrire avec un code postal/une adresse numérique pour Biz. Lorsque vous accédez à la page d’inscription, vous verrez cet écran :
Le nom d'utilisateur peut être modifié ultérieurement. Une fois que vous avez entré un nom approprié, le bouton « Enregistrer » deviendra noir et deviendra pressable, alors appuyez dessus.
Cela vous mènera à l’écran d’inscription de l’organisation. Il semble que les sociétés et les propriétaires uniques puissent tous deux postuler. Les deux options me convenaient, mais j’ai décidé d’opter pour l’option entreprise, qui comporte plus de champs de saisie. Il se trouve également que je possède une société appelée NAT Consulting LLC.
Une fois l'inscription terminée, vous serez redirigé vers un écran affichant une liste d'utilisateurs.
Cet écran affiche non seulement la liste des utilisateurs, mais également un menu « Paramètres » qui montre les paramètres définis par votre organisation, et sous « Services », il y a un lien dans le menu de gauche vers une page sur « l'API de code postal et d'adresse numérique » et une page pour « Rechercher une adresse à partir d'une adresse numérique ». Allons à la page que nous recherchons, « API Code postal/Adresse numérique ».
Cliquez pour ouvrir un menu.

La « Liste système » vous permet de visualiser une liste des clients enregistrés et d'enregistrer les clients.
Dans « Tester les informations d'identification de l'IA », vous pouvez afficher le client_id et le client_secret pour utiliser l'API de test. Il existe également une documentation de référence API pour les tests. La première chose que vous devez faire est de créer un client qui appellera l’API de test, et vous devrez suivre les instructions ici. La référence de l'API ressemble à ceci :

Le bouton « Télécharger » semble permettre de télécharger la spécification OpenAPI, mais je n’ai pas pu le télécharger. J’aimerais que cette zone soit réparée.
La référence de l'API contient la référence de l'API de production.
Les directives d'utilisation incluent des notes sur la manière de gérer les données d'« adresse numérique ».
Les notes de version sont actuellement vides.
La source de données contient le fichier CSV qui est la source des données fournies par cette API.
Essayons maintenant l’API de test.
Essayons maintenant d’accéder à l’API de test et voyons comment OAuth et OpenID Connect sont utilisés.
Obtention d'un jeton d'accès
D'après la documentation, il semble prendre en chargeOAuth 2.0 [RFC6749] Deoctroi d'informations d'identification client Il semble que ce soit le seul. Le jeton d'accès est obtenu de cette manière. Normalement, le jeton d'accès serait envoyé dans l'en-tête d'autorisation (que le serveur doit prendre en charge) ou en tant que paramètre dans le corps de la requête, mais dans cet exemple, il est envoyé dans le corps sous forme de JSON.
C'est comme ça.
{
"grant_type": "client_credentials",
"client_id": "Test_Client_Identifier_String",
"secret_key": "Test_Secret_Key"
}
Ceci n'est pas défini dans OAuth 2.0.Spécifications uniquesIl serait juste de le dire. Au fait, si vous l'envoyez en utilisant la méthode spécifiée dans RFC6749, cela entraînera une mauvaise demande.
Mais ce n’est pas la seule caractéristique unique. Dans ce cas, la demande doit inclure x-forwarded-for. Il s’agit également d’une extension propriétaire. Je peux comprendre ce que tu ressens, mais... Au fait, il n'y a aucune spécification quant à ce qu'il faut y mettre. Je pense que vous entrez probablement l'adresse IP de l'appareil se connectant à ce client. Cependant, selon la RFC7239, il est conseillé d'arrêter d'utiliser x-forwarded-for et d'utiliser Forwarded.
Au fait, le point de terminaison de l'API peut être affiché en cliquant sur le chemin de la documentation.

Dans cet esprit, nous envoyons une requête à l’API de test, qui peut être obtenue à partir de la documentation de l’API.
curl -X POST https://stub-qz73x.da.pf.japanpost.jp/api/v1/j/token \
-H "Content-Type: application/json" \
-H "X-Forwarded-For: 64.227.48.220" \
-d '{
"grant_type": "client_credentials",
"client_id": "Test_Client_Identifier_String",
"secret_key": "Test_Secret_Key"
}'
Si vous faites cela, vous obtiendrez une réponse comme celle-ci :
{"token":"eyJhbGciOiJSU.中略.TmrM38fAf8cgNm1QAnf-j0YFQA",
"token_type":"jwt",
"expires_in":600,
"scope":"J1"}
Le jeton d'accès est au format JWT. L'intérieur ressemble à ceci.
En-tête
{
"alg": "RS256",
"typ": "JWT"
}
Charge utile
{
"iss": "JPD",
"sub": "DGA TOKEN",
"scope": "J1",
"clientId": "Biz_DaPfJapanpost_MockAPI_j3QKS",
"ec_id": "8aeaf147-112f-4127-8cbb-2eff08a8e161",
"iat": 1742886316,
"exp": 1742886916
}
Cela ressemble à ça. Oh, le type est étrange.RFC9068Selon cela, le type devrait être at+jwt.
De plus, comme iss n'est qu'une chaîne, il n'est pas possible de découvrir le JWK et donc de le vérifier, mais ce n'est pas un problème puisque c'est Japan Post elle-même qui effectue la vérification. Je pensais que le sous-marin contiendrait le client_id, mais il semble que ce ne soit pas le cas et qu'il s'agisse d'une chaîne fixe.
Essayons maintenant de résoudre l’adresse numérique en une adresse.
À l’aide de ce jeton d’accès, nous effectuons ensuite une requête OAuth au point de terminaison de recherche. Le jeton d'accès peut être envoyé dans l'en-tête d'autorisation. Il semble que X-Forwarded-For soit toujours envoyé. L'API de test vous permet de rechercher trois adresses numériques de test (A3E7FK2, JN2LKS4, QN2GQX6) et des codes postaux et des codes postaux d'entreprise individuels pour Chiyoda Ward, Tokyo.
Avec des boucles, cela ressemble à ceci.
curl -X GET https://stub-qz73x.da.pf.japanpost.jp/api/v1/searchcode/A7E2FK2 \
-H "Authorization: Bearer eyJhbGci..中略..QAnf-j0YFQA" \
-H "X-Forwarded-For: 64.227.48.220" \
-H "Accept: application/json"
Ensuite, il reviendra avec quelque chose comme ceci :
{
"page": 1,
"limit": 1000,
"count": 1,
"searchtype": "dgacode",
"addresses": [
{
"dgacode": "A7E2FK2",
"zip_code": "100-0005",
"pref_code": "13",
"pref_name": "東京都",
"pref_kana": null,
"pref_roma": null,
"city_code": "13101",
"city_name": "千代田区",
"city_kana": null,
"city_roma": null,
"town_name": "丸の内",
"town_kana": null,
"town_roma": null,
"biz_name": null,
"biz_kana": null,
"biz_roma": null,
"block_name": "2丁目7−2",
"other_name": "部屋番号:サンプル1",
"address": "東京都千代田区丸の内2丁目7−2部屋番号:サンプル1",
"longitude": null,
"latitude": null
}
]
}
Eh bien, la réponse n’est pas la réponse OpenID Connect UserInfo, mais elle est unique.
Au fait, si vous spécifiez une adresse numérique autre que les trois ci-dessus,
{
"request_id":"848f5369-56fb-4488-aecd-b82599a1b2f9",
"error_code":"404-1029-0001",
"message":"該当するデジアドがありませんでした"
}
et reviens.
Accéder à l'environnement de production
Ok, donc cela a fonctionné, essayons maintenant d'accéder à l'environnement de production.
Ce que vous faites est le même que pour les tests, seuls la destination, le client_id et le client_secret changeront. Vous pouvez obtenir le client_id et le client_secret de production en enregistrant un client dans le menu « Liste des systèmes ».
Pour obtenir le jeton, rendez-vous sur https://api.da.pf.japanpost.jp/api/v1/j/token Veuillez le modifier et le demander.
curl -X POST https://api.da.pf.japanpost.jp/api/v1/j/token \
-H "Content-Type: application/json" \
-H "X-Forwarded-For: 64.227.48.220" \
-d '{
"grant_type": "client_credentials",
"client_id": "クライアントID",
"secret_key": "クライアントシークレット"
}'
Un jeton d'accès sera renvoyé, que vous pourrez utiliser pour effectuer des demandes. Cela renverra le JSON affiché ci-dessus. Vous pouvez également spécifier un code postal au lieu d'une adresse numérique.
curl -X GET https://api.da.pf.japanpost.jp/api/v1/searchcode/6180000 \
-H "Authorization: Bearer eyJhbGciOiJS..中略..wV0si0TiQ" \
-H "X-Forwarded-For: 64.227.48.220" \
-H "Accept: application/json"
するとこんなふうに帰ってきます。
{
"page": 1,
"limit": 1000,
"count": 2,
"searchtype": "zipcode",
"addresses": [
{
"dgacode": null,
"zip_code": "6180000",
"pref_code": "26",
"pref_name": "京都府",
"pref_kana": "キョウトフ",
"pref_roma": "KYOTO",
"city_code": "26303",
"city_name": "乙訓郡大山崎町",
"city_kana": "オトクニグンオオヤマザキチョウ",
"city_roma": "OTOKUNI-GUN OYAMAZAKI-CHO",
"town_name": "",
"town_kana": "",
"town_roma": "",
"biz_name": null,
"biz_kana": null,
"biz_roma": null,
"block_name": null,
"other_name": null,
"address": null,
"longitude": null,
"latitude": null
},
{
"dgacode": null,
"zip_code": "6180000",
"pref_code": "27",
"pref_name": "大阪府",
"pref_kana": "オオサカフ",
"pref_roma": "OSAKA",
"city_code": "27301",
"city_name": "三島郡島本町",
"city_kana": "ミシマグンシマモトチョウ",
"city_roma": "MISHIMA-GUN SHIMAMOTO-CHO",
"town_name": "",
"town_kana": "",
"town_roma": "",
"biz_name": null,
"biz_kana": null,
"biz_roma": null,
"block_name": null,
"other_name": null,
"address": null,
"longitude": null,
"latitude": null
}
]
}
ま と め
Donc, pour résumer.
- API de conversion d'annonces numériquesRFC6749Obtenez un jeton d'accès à l'aide d'une spécification unique similaire à l'octroi des informations d'identification du client. Ce jeton d'accès est un JWT, mais le type est RFC9068Comme spécifié, il ne s'agit pas de at+jwt mais de JWT.
- Maintenant, utilisez le jeton d’accès obtenuRFC6750Le code est envoyé dans ce format pour obtenir la chaîne de caractères (pas nécessairement une adresse) enregistrée dans l'adresse numérique.
- N'importe quelle chaîne peut être enregistrée. Par exemple, vous pouvez enregistrer une adresse comme « Dans une lettre reçue de Tokyo : « Tu n'existes pas ». Elle n'apparaît pas dans le miroir et personne ne la remarque. J'ai discrètement disparu. » Vous pouvez également enregistrer des éléments comme « »1.
- Je ne trouve rien qui ressemble à OpenID Connect pour le moment.
- Vous pouvez également obtenir une adresse en spécifiant un code postal au lieu d'une adresse numérique. S'il y a des doublons, plusieurs éléments seront renvoyés dans un tableau.
Au fait, il existe de nombreux codes postaux en double. Selon les informations, il y aurait 1,341 XNUMX doublons. Selon l'objet, il peut même provenir d'une préfecture différente. Comment est-ce arrivé...?
