Mon équipe travaille dans une intégration entre une application Basé sur le Documentation et Cette question a>, je sais que le Ainsi, comme je ne peux pas savoir à coup sûr quand un Est-ce que quelqu'un sait qui est l'erreur renvoyée lorsque vous essayez d'actualiser un Signature code> et
étendu code> . p>
rafraîchissez_token code> expire généralement dans environ 30 jours fort>, mais il peut changer à tout moment p>. p>.
rafraîchissez_token code> expirera (afin que je puisse avoir un travail récurrent pour le mettre à jour, par exemple), et comme pour moi d'avoir un < Code> Refresh_Token Code> Je devrais attendre environ 30 jours pour voir quelle erreur il revient, alors je peux le gérer, ma question est ... P>
Access_Token code> et le
Refresh_Token code> est expiré? Ce serait-il une subvention invalide em>? Quel est exactement code d'erreur em> ou identifiant em> il renvoie afin que je puisse le gérer? P>
3 Réponses :
Je vous recommanderais de ne pas faire des hypothèses sur les messages d'erreur et les conditions dans lesquelles vous les obtenez. Pour résoudre ce problème, je voudrais implémenter le code qui tente d'utiliser le jeton d'actualisation lorsque votre jeton d'accès d'origine ne fonctionne pas (erreur) et tente de demander à l'utilisateur de recommencer le processus de connexion lorsque le jeton de rafraîchissement ne fonctionne pas (erreur). La raison (expiré, mot de passe modifié, l'accès a révoqué ou même un autre bug) n'a pas d'importance. Par exemple, si la raison est que le consentement à l'application a été révoqué - le processus de subvention de code d'autorisation demanderait à l'utilisateur le consentement à nouveau. Donc, de cette façon - vous gérez tout sans avoir à avoir un code spécial pour chaque cas. Enfin, ce sont des messages d'erreur possibles changeront et même la logique pour lesquelles vous les obtiendrez peut changer pour toutes sortes de raisons. Les applications robustes gèrent toutes les erreurs correctement. P>
Merci @inbargazit, mais cela ne me semble pas pour moi qui gère une éventuelle erreur en demandant à l'utilisateur le consentement à nouveau est une bonne approche non plus. Imaginez, par exemple, on a foiré avec les configurations de l'application utilisées dans l'intégration (bien que cela soit improbable et idéalement, cela ne devrait pas arriver, il serait peut-être demandé), l'utilisateur serait invité à consentir des autorisations, mais cela ne résoudrait pas le problème. J'accepte de couvrir plus de scénarios que de "rafraîchir le jeton expiré" i>, mais il devrait y avoir un moyen pour moi d'identifier si les erreurs que je reçois seraient vraiment résolues en consentant à l'application.
Le consentement n'est requis qu'une fois, je viens de donner cela comme exemple. Ce que je veux dire, c'est de ré-authentifier l'utilisateur. C'est juste une bonne pratique pour le faire de temps en temps.
J'ai mentionné consentement i> mais je sais que ce n'est requis qu'une fois, à moins que je ne change que les étanches utilisées ou que l'utilisateur a révoqué l'accès à l'application. Mais mon point est ... Je ne pense pas à demander à l'utilisateur de ré-authentifier lorsque Toute erreur B> se produit est une bonne approche, car il pourrait y avoir des erreurs où il ne suffirait pas de ré-authentifier ne résoudrait pas cette. Je peux aller de cette façon si je ne peux pas connaître les erreurs éventuelles pour les gérer, bien que je ne voudrais pas.
Oui, vous avez raison, des erreurs (disent que votre secret de client est erroné) ne sera pas aidé, mais ce sont toutes des erreurs à votre extrémité, pas l'utilisateur, pas les erreurs normales / attendues qui peuvent se produire au cours de l'utilisation d'une API. .
C'est pourquoi je préférerais rediriger l'utilisateur à la page de connexion uniquement lorsqu'un ensemble d'erreurs se produisent et non avec aucune erreur. J'ai trouvé ce Guide API de repos Docusign, version 2 a> pdf (althoug ce n'est pas v2.1), où le sujet OAUTH2 codes de réponse B> répertorie les codes d'erreur possibles, je suppose donc que je peux baser sur eux pour rediriger l'utilisateur (rediriger probablement l'utilisateur Lorsque l'erreur est l'une de ces: [ invalid_client code>,
invalid_grant code>,
non autorisé_client code>,
non supporté_gant_type code>], mais pas celui-ci :
invalid_request code>).
ça ma l'air bon
Puisque vous utilisez la portée code> étendue code>, vous obtiendrez un nouveau jeton de rafraîchissement (bon pour 30 jours supplémentaires) à chaque fois que vous utilisez le jeton d'actualisation pour obtenir un nouvel ensemble de {Accès et Actualiser les jetons}. P>
Donc, si vous vous assurez d'utiliser le jeton de rafraîchissement chaque fois que cela atteint 25 jours, vous serez toujours bon (à moins que l'utilisateur ait retiré le consentement entre). P>
Bien sûr, si votre application utilise l'API docusign chaque jour, le jeton de rafraîchissement ne sera jamais plus d'une journée. P>
Je pense que vous obtiendrez une erreur EM> invalide em> si le jeton de rafraîchissement a expiré avant d'essayer de l'utiliser. P>
Chaque fois que votre application ait un problème à l'aide du jeton Actualiser, demandez à votre utilisateur de ré-authentifier. P>
Merci @Larry ... Je suppose également que les erreurs utilisant le jeton d'actualisation reviendraient une subvention invalide i>, mais jusqu'à présent, je suppose que je devrais attendre 30 jours pour être sûr. Mon application dépend de l'utilisateur de décider d'utiliser docusign, ce qui signifie que grâce à notre application, l'utilisateur est capable d'envoyer des documents à signer (enveloppe). Donc, je ne peux pas vous assurer que l'utilisateur l'utilisera fréquemment pour mettre à jour constamment le jeton. Je pourrais avoir un travail récurrent pour le mettre à jour avant 30 jours, mais puisque la documentation indique "il expire dans environ 30 jours b>, mais peut changer à tout moment b> " I>, je ne suis pas à l'aise avec cette approche.
Ces déclarations dans les documents sont en cys. Dès cette écriture, le jeton de rafraîchissement dure 30 jours. (Mais si l'utilisateur a retiré le consentement, l'actualisation ne fonctionnera pas et l'utilisateur peut le faire à tout moment.)
Je suppose que je suppose que je vais gérer les erreurs en fonction des codes d'erreur que j'ai trouvés dans le Guide de l'API de repos Docusign, version 2 PDF. Vérifiez Ce commentaire A > Pour plus d'informations.
Je n'ai pas encore été en mesure d'utiliser un jeton d'actualisation expiré em>, mais basé sur OAuth 2.0 RFC (émettant un jeton d'accès> Réponse des erreurs) Je crois fermement que cela retournera Et j'ai trouvé ce API Docusign Repose Guide, version 2 PDF (bien que ce ne soit pas v2.1) avec des informations sur les erreurs retournées par Docusign Oauth2 Docteurs: P> Donc, basé sur ces informations et les discussions avec @inbargazit em> et @larryk em>, ma conclusion est ... strong> P> Je vais Redirection Strort> L'utilisateur à la page d'authentification lorsqu'une erreur se produit pendant que invalid_grant code> pour les jetons d'actualisation expirés, une fois qu'il est indiqué ...
invalid_grant CODE>: La subvention d'autorisation fournie ou Actualiser le jeton strong> est invalide, expiré, révoqué ... p>
blockQuote>
Access_Token code> (en utilisant Le
rafraîchissez_token code>) et l'erreur renvoyée est le type d'erreur qui pourrait être résolu en ré-authentifiant, ce qui semble être ceux:
invalid_client code>,
invalid_grant Code> et
non autorisé_client code>. Échantillon de code: p>
var redirectUserErrors = new[] { "invalid_client", "invalid_grant", "unauthorized_client" };
// [...]
var result = await httpClient.PostAsync(oAuthUri, data);
var stringContent = await result.Content.ReadAsStringAsync();
if (!result.IsSuccessStatusCode)
{
var errorObject = JObject.Parse(stringContent);
string errorCode = errorObject["error"] != null ? errorObject["error"].ToString() : null;
if (!string.IsNullOrEmpty(errorCode) &&
redirectUserErrors.Any(err => err.Equals(errorCode, StringComparison.InvariantCultureIgnoreCase)))
{
throw new DocuSignAuthRedirectException($"An error has occurred when trying to refresh the access token. Error code: '{errorCode}'");
// [The custom exception needs to be handled outside, so the User can be redirected to the Auth page]
}
}
Cette documentation a été tirée du Centre de développeur car elle fait référence à une mise en œuvre plus ancienne de OAuth qui est obsolète et n'est plus supportée. Les codes d'erreur que vous voyez ici ne sont pas une correspondance exacte pour ce que vous verrez si vous utilisez le serveur de compte docusign ( compte.docusign.com code>) pour l'authentification.
Merci de me laisser savoir @ auvoir!