éprouve des difficultés depuis quelques jours avec l'authentification par jeton eBay. J'ai du mal à comprendre comment récupérer de nouveaux jetons, après m'être inscrit à un compte de programme développeur, j'ai demandé le jeu de clés et je l'ai obtenu, ensuite j'accorde l'accès au jeton Auth'n'Auth qui promet de durer 18 mois , et oui, le jeton ne fonctionne que sur les API de trading, de shopping et de recherche.
Mais lorsque vous devez exécuter des API d'achat, de vente et de commerce, vous devez obtenir des jetons oauth. Et vous pouvez utiliser le style appelé "Application mono-utilisateur" et vous connecter oauth de User Token Tool, et obtenez un oauth avec 2 heures d'expiration.
Plus tard, le jeton expire et vous perdez un peu l'accès aux API mentionnées ci-dessus. J'ai essayé de récupérer des jetons à partir de Trading> Get ID session, Trading> Fetch token, mais après avoir fourni l'ID de session à Fetch token, il dit: "L'utilisateur final n'a pas terminé le flux de connexion Auth & Auth." bien qu'il existe un jeton valide de 18 mois, il continue de renvoyer cette erreur.
Y a-t-il un exemple d'article à ce sujet, que n'importe qui aurait pu lire ou écrire?
Votre confusion n'est pas injustifiée. Mes propres expériences avec ce flux d'API, ainsi que celles d'une grande partie des forums de développement officiels , ont été stressantes. Ce qui suit détaille la procédure pour générer un oauth non pertinent de savoir si vous vous connectez à un un seul , dédié, compte ou plusieurs comptes d'utilisateurs.
Il y a le guide officiel , qui explique tout le processus, donc j'hésite à recréer le guide entier ici. Je peux cependant fournir un résumé (je conseille de suivre les instructions ci-dessous en utilisant Postman avant d'essayer via votre application):
https://api.ebay.com/oauth/api_scope/sell.inventory
portée. Déterminez les points de terminaison dont vous aurez besoin et accédez au document API pour chacun et recherchez la section d'étendue.La requête get ressemble maintenant à ceci:
`https://signin.sandbox.ebay.com/authorize?
client_id=<your-client-id-value>&
redirect_uri=<your-RuName-value>&
response_type=code&
scope=https%3A%2F%2Fapi.ebay.com%2Foauth%2Fapi_scope%2Fsell.account%20
https%3A%2F%2Fapi.ebay.com%2Foauth%2Fapi_scope%2Fsell.inventory`
Il est également recommandé d'ajouter une chaîne de requête state
, que j'ai omise pour faciliter l'utilisation, mais vous devez rechercher ce qu'elles sont et pourquoi elles sont recommandées pour OAuth.
code
. Si vous développez une application pour plusieurs utilisateurs et prévoyez de les connecter réellement sur cette page, vous devez configurer votre application pour récupérer la réponse de confirmation, qui sera l'URL susmentionnée, et en extraire le code. Ce code est très éphémère. Si vous le récupérez manuellement via un navigateur, vous devez passer rapidement aux étapes suivantes.Vous devez maintenant effectuer une POST à https://api.sandbox.ebay.com/identity/v1/oauth2/token . Consultez la structure ci-dessous:
HTTP method: POST
URL (Sandbox): https://api.sandbox.ebay.com/identity/v1/oauth2/token
HTTP headers:
Content-Type = application/x-www-form-urlencoded
Authorization = Basic <B64-encoded-oauth-credentials> (A base64-encoded value made from your client ID and client secret, separated by colon. For example, in PHP you could generate it with: `base64_encode ("fakeclientid123:fakeclientsecret123")`)
Request body (wrapped for readability):
grant_type=authorization_code& (literally the string "authorization_code")
code=<authorization-code-value>& (code retreived in previous step)
redirect_uri=<RuName-value> (same RuName as earlier)
En cas de succès, cette demande renverra quelque chose comme ci-dessous:
{
"access_token": "v^1.1#i^1#p^3#r^1...XzMjRV4xMjg0",
"token_type": "User token",
"expires_in": 7200,
"refresh_token": "v^1.1#i^1#p^3#r^1...zYjRV4xMjg0",
"refresh_token_expires_in": 47304000
}
Il y a le oauth jeton que nous recherchons, qui durera 2 heures . Le deuxième jeton est un jeton d'actualisation, qui durera environ 18 mois. Gardez ce jeton en sécurité et ne le partagez pas, ni ne le codez en dur dans votre application. À partir de ce moment, votre application doit effectuer des appels de rafraîchissement, en utilisant ce jeton, pour obtenir un nouveau oauth chaque fois que cela est nécessaire. Une fois les 18 mois écoulés, ou si l'utilisateur passe à nouveau par la procédure "Autoriser l'accès", vous devrez faire tout ce qui précède pour générer un nouveau jeton d'actualisation. En supposant que l'API n'a pas changé à ce stade.
Il convient de noter que la durée de vie de 18 mois n'est pas une procédure normale pour l'actualisation OAuth, qui devrait normalement renvoyer un nouveau jeton d'actualisation chaque fois que l'ancien est utilisé.
Pour rafraîchir une oauth:
HTTP method: POST
URL (Sandbox): https://api.sandbox.ebay.com/identity/v1/oauth2/token
HTTP headers:
Content-Type = application/x-www-form-urlencoded
Authorization = Basic <B64-encoded-oauth-credentials>
Request body (wrapped for readability):
grant_type=refresh_token&
refresh_token=<your-refresh-token-value>&
scope=https%3A%2F%2Fapi.ebay.com%2Foauth%2Fapi_scope%2Fsell.account%20
https%3A%2F%2Fapi.ebay.com%2Foauth%2Fapi_scope%2Fsell.inventory
J'espère que ça aide!
Pour ceux qui éprouvent des difficultés, assurez-vous que vous utilisez le code/jeton encodé.
J'ai presque perdu la tête en essayant de comprendre ce qui ne va pas parce qu'ebay retourne le jeton de rafraîchissement décodé
Pour tous ceux qui éprouvent des difficultés, veuillez noter que l'URL à l'étape 4 est différente de l'URL indiquée sur eBay. L'URL sur eBay commence par https://auth.sandbox.ebay.com/oauth2/authorize
, mais l'URL de l'étape 4 commence par https://signin.sandbox.ebay.com/authorize