Je vais résoudre ce problème. C'est probablement arrivé dans un moment. Lors de l'autorisation de WeChat, WeChat vous permet officiellement d'utiliser une adresse guide (A.action) pour rediriger vers une autre adresse (B.action). Vous pouvez obtenir le code dans la deuxième adresse (B.action). échange contre access_token,fresh_token, etc. Dans la plupart des cas, les informations utilisateur peuvent être obtenues pour la première fois, mais lors de l'actualisation pour la deuxième fois, le message errcode":40163,"errmsg":"code été utilisé est affiché. Cela signifie que le code n'a été utilisé qu'une seule fois. La documentation officielle indique très clairement que le code ne peut être utilisé qu'une seule fois. Bien entendu, que vous ayez actualisé ou non, tant que vous utilisez le même code et que ce n'est pas la première fois que vous l'utilisez, l'erreur ci-dessus sera signalée. C'est ainsi que je l'ai résolu. Dans B.action, déterminez d'abord si les access_token etfresh_token obtenus par le code existent dans la session (il est préférable de les encapsuler dans des objets d'entité, ce qui est plus facile à juger s'ils). n'existe pas, cela signifie que le code est utilisé pour la première fois. Utilisation (la page a été fermée auparavant), s'il existe, rendez-vous sur la session pour obtenir directement le access_token ou le rafraîchir_token. Utilisez le access_token et le rafraîchissement_token obtenus pour obtenir des informations utilisateur. J'espère que ce que j'ai dit vous sera utile !
Il y a un problème avec la partie traitement de votre autorisation. Une fois l'autorisation obtenue, les informations utilisateur sont enregistrées dans la session Vous n'êtes pas enregistré dans la session après autorisation. page, il n'y a aucune information utilisateur dans la session, mais l'adresse est toujours là. Elle a un paramètre de code, j'ai donc pris le code pour obtenir l'autorisation, mais le code a déjà été utilisé et le code ne peut être utilisé qu'une seule fois
C'est tout. Les paramètres spécifiés par l'URI d'autorisation d'OAuth2.0 incluent le type de réponse, le code d'autorisation, l'état, etc. Vous appelez l'interface d'autorisation WeChat OAuth2.0 et transmettez divers secrets d'application afin d'obtenir le code d'autorisation. Oui. , à quoi sert ce code ? Il est utilisé par un tiers (c'est-à-dire vous, l'utilisateur vous autorise à accéder à ses ressources sur WeChat) pour échanger AccessToken avec le serveur d'autorisation OAuth. Il est également utilisé pour appeler les paramètres utilisés par. l'URI d'autorisation que j'ai mentionné au début. , dans la spécification OAuth2.0, les paramètres renvoyés par l'URI incluent AccessToken, RefreshToken, etc. Avec cet AccessToken, vous pouvez l'utiliser pour vous authentifier auprès du serveur de ressources afin d'obtenir les ressources utilisateur. OAuth2.0 stipule que pour des raisons de sécurité, ce code d'autorisation ne peut être échangé qu'une seule fois contre AccessToken.
Alors, comment WeChat l'implémente-t-il ? Leur interface d'autorisation comprend le type de réponse, l'URI de redirection, l'état, l'appid, l'appsecret et d'autres paramètres. Leur logique est que l'utilisateur appelle d'abord cette interface d'autorisation, puis autorise (ou autorise silencieusement), quand. l'utilisateur confirme l'autorisation, l'interface d'autorisation WeChat est toujours appelée à ce moment. Une fois que le serveur d'autorisation WeChat a confirmé l'autorisation, il redirigera la demande vers l'uri de redirection que vous avez défini et ajoutera le code et l'état des paramètres d'URL à cet uri. code C'est le code d'autorisation, donc votre serveur recevra le code d'autorisation via cette redirection, et vous pourrez utiliser ce code pour échanger contre AccessToken, puis obtenir les différentes ressources de l'utilisateur dans WeChat (comme l'open id).
Alors pourquoi avez-vous dit que vous aviez signalé une erreur lors de l'actualisation ? Je soupçonne sérieusement que vous avez actualisé l'URL de votre propre serveur, puis que votre code a obtenu à nouveau le même code, puis l'a utilisé, bien sûr, le code d'erreur. a été réutilisé.
Faites attention à ce que deux requêtes consécutives (utilisant le même code en échange d'informations utilisateur) entraînent que cette erreur se produise la deuxième fois que le code est utilisé
Avez-vous cliqué sur WeChat Pay ? Le bouton Payer ne peut être cliqué qu'une seule fois. Après avoir appelé le paiement, si vous annulez le paiement et cliquez à nouveau sur Payer, une erreur sera signalée. Vous ne pourrez quitter la page actuelle et y accéder à nouveau. !
Je vais résoudre ce problème.
C'est probablement arrivé dans un moment.
Lors de l'autorisation de WeChat, WeChat vous permet officiellement d'utiliser une adresse guide (A.action) pour rediriger vers une autre adresse (B.action). Vous pouvez obtenir le code dans la deuxième adresse (B.action). échange contre access_token,fresh_token, etc. Dans la plupart des cas, les informations utilisateur peuvent être obtenues pour la première fois, mais lors de l'actualisation pour la deuxième fois, le message errcode":40163,"errmsg":"code été utilisé est affiché. Cela signifie que le code n'a été utilisé qu'une seule fois. La documentation officielle indique très clairement que le code ne peut être utilisé qu'une seule fois. Bien entendu, que vous ayez actualisé ou non, tant que vous utilisez le même code et que ce n'est pas la première fois que vous l'utilisez, l'erreur ci-dessus sera signalée.
C'est ainsi que je l'ai résolu. Dans B.action, déterminez d'abord si les access_token etfresh_token obtenus par le code existent dans la session (il est préférable de les encapsuler dans des objets d'entité, ce qui est plus facile à juger s'ils). n'existe pas, cela signifie que le code est utilisé pour la première fois. Utilisation (la page a été fermée auparavant), s'il existe, rendez-vous sur la session pour obtenir directement le access_token ou le rafraîchir_token. Utilisez le access_token et le rafraîchissement_token obtenus pour obtenir des informations utilisateur.
J'espère que ce que j'ai dit vous sera utile !
L'invite est très claire indiquant que
code
a été utilisé etcode
ne peut être utilisé qu'une seule fois.Il y a un problème avec la partie traitement de votre autorisation. Une fois l'autorisation obtenue, les informations utilisateur sont enregistrées dans la session
Vous n'êtes pas enregistré dans la session après autorisation. page, il n'y a aucune information utilisateur dans la session, mais l'adresse est toujours là. Elle a un paramètre de code, j'ai donc pris le code pour obtenir l'autorisation, mais le code a déjà été utilisé et le code ne peut être utilisé qu'une seule fois
C'est tout. Les paramètres spécifiés par l'URI d'autorisation d'OAuth2.0 incluent le type de réponse, le code d'autorisation, l'état, etc. Vous appelez l'interface d'autorisation WeChat OAuth2.0 et transmettez divers secrets d'application afin d'obtenir le code d'autorisation. Oui. , à quoi sert ce code ? Il est utilisé par un tiers (c'est-à-dire vous, l'utilisateur vous autorise à accéder à ses ressources sur WeChat) pour échanger AccessToken avec le serveur d'autorisation OAuth. Il est également utilisé pour appeler les paramètres utilisés par. l'URI d'autorisation que j'ai mentionné au début. , dans la spécification OAuth2.0, les paramètres renvoyés par l'URI incluent AccessToken, RefreshToken, etc. Avec cet AccessToken, vous pouvez l'utiliser pour vous authentifier auprès du serveur de ressources afin d'obtenir les ressources utilisateur. OAuth2.0 stipule que pour des raisons de sécurité, ce code d'autorisation ne peut être échangé qu'une seule fois contre AccessToken.
Alors, comment WeChat l'implémente-t-il ? Leur interface d'autorisation comprend le type de réponse, l'URI de redirection, l'état, l'appid, l'appsecret et d'autres paramètres. Leur logique est que l'utilisateur appelle d'abord cette interface d'autorisation, puis autorise (ou autorise silencieusement), quand. l'utilisateur confirme l'autorisation, l'interface d'autorisation WeChat est toujours appelée à ce moment. Une fois que le serveur d'autorisation WeChat a confirmé l'autorisation, il redirigera la demande vers l'uri de redirection que vous avez défini et ajoutera le code et l'état des paramètres d'URL à cet uri. code C'est le code d'autorisation, donc votre serveur recevra le code d'autorisation via cette redirection, et vous pourrez utiliser ce code pour échanger contre AccessToken, puis obtenir les différentes ressources de l'utilisateur dans WeChat (comme l'open id).
Alors pourquoi avez-vous dit que vous aviez signalé une erreur lors de l'actualisation ? Je soupçonne sérieusement que vous avez actualisé l'URL de votre propre serveur, puis que votre code a obtenu à nouveau le même code, puis l'a utilisé, bien sûr, le code d'erreur. a été réutilisé.
Faites attention à ce que deux requêtes consécutives (utilisant le même code en échange d'informations utilisateur) entraînent que cette erreur se produise la deuxième fois que le code est utilisé
Avez-vous cliqué sur WeChat Pay ? Le bouton Payer ne peut être cliqué qu'une seule fois. Après avoir appelé le paiement, si vous annulez le paiement et cliquez à nouveau sur Payer, une erreur sera signalée. Vous ne pourrez quitter la page actuelle et y accéder à nouveau. !
L'affiche originale a-t-elle résolu le problème ? J'ai également rencontré le même problème ?