집 >백엔드 개발 >PHP 튜토리얼 >WeChat 공개 플랫폼에서 '귀하의 서비스가 토큰 확인에 올바르게 응답하지 못했습니다' 오류에 대한 해결 방법
WeChat 공개 플랫폼에서 '귀하의 서비스가 토큰 확인에 올바르게 응답하지 못했습니다' 오류에 대한 해결 방법
WBOY원래의
2016-08-08 09:29:261345검색
재 게시: 링크를 열려면 클릭하세요
http://lvwenhan.com/create/372.html
본질: 공식 파일을 사용하여 댓글을 단 후
$wechatObj->valid();을 호출하는 대신 $wechatObj->responseMsg();을 호출하세요. 위챗 공개 플랫폼 방식의 "검증" 오류 valid();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "%s0";
if(!empty( $keyword ))
{
$msgType = "text";
$contentStr = "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
?>위는 Tencent에서 공식적으로 제공하는 인터페이스 파일의 예입니다. 문제 해결 방법은 사실 매우 간단합니다. WeChat 문서가 작성되지 않은 것 같습니다(또는 찾을 수 없습니다==): 토큰을 확인할 때 사용: $wechatObj->valid();
정식 프로덕션 환경에서 사용자 메시지에 응답해야 하는 경우 다음을 사용하세요. $wechatObj->responseMsg();
문제가 해결되었습니다.
위 내용은 관련 내용을 포함하여 WeChat 공개 플랫폼의 "귀하의 서비스가 토큰 확인에 올바르게 응답하지 못했습니다" 오류에 대한 해결책을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.