이 문제는 제가 해결하겠습니다. 아마도 얼마 지나지 않아 일어난 일이겠죠. WeChat을 인증할 때 WeChat에서는 공식적으로 가이드 주소(A.action)를 사용하여 다른 주소(B.action)로 리디렉션할 수 있습니다. 두 번째 주소(B.action)에서 코드를 사용할 수 있습니다. access_token, Refresh_token 등으로 교환합니다. 대부분의 경우 처음에는 사용자 정보를 얻을 수 있지만 두 번째로 새로 고칠 때 errcode":40163,"errmsg":"code been Used라는 메시지가 나타납니다. 이는 코드가 한 번 사용되었다는 의미입니다. 공식 문서에는 해당 코드가 한 번만 사용될 수 있음이 매우 명확하게 나와 있습니다. 물론, 새로 고침 여부에 관계없이 동일한 코드를 사용하고 처음 사용하는 것이 아니라면 위의 오류가 보고됩니다. 이렇게 해결했습니다. B.action에서는 먼저 코드에서 얻은 access_token과 Refresh_token이 세션에 존재하는지 확인합니다. (그렇다면 판단하기 더 쉬운 엔터티 객체로 캡슐화하는 것이 가장 좋습니다.) 존재하지 않는다는 것은 해당 코드가 처음으로 사용되었다는 의미입니다. 사용(이전에 페이지가 닫혔음)이 있으면 세션으로 이동하여 access_token 또는 Refresh_token을 직접 얻으십시오. 획득한 access_token과refresh_token을 이용하여 사용자 정보를 획득합니다. 제가 말씀드린 내용이 도움이 되었기를 바랍니다.
그렇습니다. OAuth2.0의 인증 URI 지정 매개변수에는 응답 유형, 인증 코드, 상태 등이 포함됩니다. 인증 코드를 얻기 위해 WeChat OAuth2.0 인증 인터페이스를 호출하고 다양한 appid appsecret을 전달합니다. , 이 코드는 무엇을 위한 것인가요? 제3자(즉, 사용자가 WeChat에서 자신의 리소스에 액세스하도록 권한을 부여함)가 AccessToken을 OAuth 인증 서버와 교환하는 데 사용됩니다. 처음에 언급한 인증 URI에는 OAuth2.0 사양에서 URI가 반환하는 매개 변수에는 AccessToken, RefreshToken 등이 포함됩니다. 이 AccessToken을 사용하면 이를 사용하여 리소스 서버에 인증하여 사용자 리소스를 얻을 수 있습니다. OAuth2.0에서는 안전을 위해 이 인증 코드를 AccessToken으로 한 번만 교환할 수 있다고 규정합니다.
WeChat은 이를 어떻게 구현합니까? 해당 인증 인터페이스에는 응답 유형, 리디렉션 URI, 상태, appid, appsecret 및 기타 매개변수가 포함됩니다. 해당 논리는 사용자가 먼저 이 인증 인터페이스를 호출한 다음 승인(또는 자동으로 승인)한다는 것입니다. 사용자가 인증을 확인하면 WeChat 인증 서버가 인증을 확인한 후 요청을 설정한 리디렉션 URI로 리디렉션하고 이 URI에 URL 매개변수 코드와 상태를 추가합니다. code 인증 코드이므로 서버는 이 리디렉션을 통해 인증 코드를 받게 되며, 이 코드를 사용하여 AccessToken을 교환한 후 WeChat에서 사용자의 다양한 리소스(예: open id)를 얻을 수 있습니다.
그렇다면 새로 고칠 때 오류를 보고했다고 말한 이유는 무엇입니까? 귀하의 서버 URL을 새로 고친 다음 코드가 동일한 코드를 다시 얻은 다음 당연히 오류 코드를 사용했다고 의심됩니다. 재사용되었습니다.
이 문제는 제가 해결하겠습니다.
아마도 얼마 지나지 않아 일어난 일이겠죠.
WeChat을 인증할 때 WeChat에서는 공식적으로 가이드 주소(A.action)를 사용하여 다른 주소(B.action)로 리디렉션할 수 있습니다. 두 번째 주소(B.action)에서 코드를 사용할 수 있습니다. access_token, Refresh_token 등으로 교환합니다. 대부분의 경우 처음에는 사용자 정보를 얻을 수 있지만 두 번째로 새로 고칠 때 errcode":40163,"errmsg":"code been Used라는 메시지가 나타납니다. 이는 코드가 한 번 사용되었다는 의미입니다. 공식 문서에는 해당 코드가 한 번만 사용될 수 있음이 매우 명확하게 나와 있습니다. 물론, 새로 고침 여부에 관계없이 동일한 코드를 사용하고 처음 사용하는 것이 아니라면 위의 오류가 보고됩니다.
이렇게 해결했습니다. B.action에서는 먼저 코드에서 얻은 access_token과 Refresh_token이 세션에 존재하는지 확인합니다. (그렇다면 판단하기 더 쉬운 엔터티 객체로 캡슐화하는 것이 가장 좋습니다.) 존재하지 않는다는 것은 해당 코드가 처음으로 사용되었다는 의미입니다. 사용(이전에 페이지가 닫혔음)이 있으면 세션으로 이동하여 access_token 또는 Refresh_token을 직접 얻으십시오. 획득한 access_token과refresh_token을 이용하여 사용자 정보를 획득합니다.
제가 말씀드린 내용이 도움이 되었기를 바랍니다.
code
가 사용되었으며code
은 한 번만 사용할 수 있다는 메시지가 매우 명확합니다.인증 처리 부분에 문제가 있습니다.
인증 후 세션에 저장하지 않으셨는데요. 세션에 사용자 정보는 없는데 주소는 그대로 남아있네요. 코드 매개변수가 있어서 인증받기 위해 코드를 가져왔는데 이미 사용된 코드이고, 한 번만 사용할 수 있는 코드입니다
그렇습니다. OAuth2.0의 인증 URI 지정 매개변수에는 응답 유형, 인증 코드, 상태 등이 포함됩니다. 인증 코드를 얻기 위해 WeChat OAuth2.0 인증 인터페이스를 호출하고 다양한 appid appsecret을 전달합니다. , 이 코드는 무엇을 위한 것인가요? 제3자(즉, 사용자가 WeChat에서 자신의 리소스에 액세스하도록 권한을 부여함)가 AccessToken을 OAuth 인증 서버와 교환하는 데 사용됩니다. 처음에 언급한 인증 URI에는 OAuth2.0 사양에서 URI가 반환하는 매개 변수에는 AccessToken, RefreshToken 등이 포함됩니다. 이 AccessToken을 사용하면 이를 사용하여 리소스 서버에 인증하여 사용자 리소스를 얻을 수 있습니다. OAuth2.0에서는 안전을 위해 이 인증 코드를 AccessToken으로 한 번만 교환할 수 있다고 규정합니다.
WeChat은 이를 어떻게 구현합니까? 해당 인증 인터페이스에는 응답 유형, 리디렉션 URI, 상태, appid, appsecret 및 기타 매개변수가 포함됩니다. 해당 논리는 사용자가 먼저 이 인증 인터페이스를 호출한 다음 승인(또는 자동으로 승인)한다는 것입니다. 사용자가 인증을 확인하면 WeChat 인증 서버가 인증을 확인한 후 요청을 설정한 리디렉션 URI로 리디렉션하고 이 URI에 URL 매개변수 코드와 상태를 추가합니다. code 인증 코드이므로 서버는 이 리디렉션을 통해 인증 코드를 받게 되며, 이 코드를 사용하여 AccessToken을 교환한 후 WeChat에서 사용자의 다양한 리소스(예: open id)를 얻을 수 있습니다.
그렇다면 새로 고칠 때 오류를 보고했다고 말한 이유는 무엇입니까? 귀하의 서버 URL을 새로 고친 다음 코드가 동일한 코드를 다시 얻은 다음 당연히 오류 코드를 사용했다고 의심됩니다. 재사용되었습니다.
두 번의 연속 요청(사용자 정보 대신 동일한 코드 사용)으로 인해 두 번째 코드 사용 시 이 오류가 발생하는지 주의하세요
위챗페이를 클릭하셨나요? 결제 버튼은 한 번만 클릭할 수 있습니다. 결제 호출 후 결제를 취소하고 다시 결제를 클릭하면 현재 페이지에서 나가서 다시 입력만 가능합니다. !
원래 포스터로 해결되었나요? 저도 같은 문제를 겪었나요?