1. 타사 인터페이스 호출 방법
<code>function https_request($url,$type='get',$res='json',$data = ''){ //1.初始化curl $curl = curl_init(); //2.设置curl的参数 curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,2); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); if ($type == "post"){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } //3.采集 $output = curl_exec($curl); //4.关闭 curl_close($curl); if ($res == 'json') { return json_decode($output,true); } } </code>
2. 사용자의 openid를 가져옵니다
<code> function getBaseInfo(){ $appid = "我的ID"; $redirect_uri = urlencode("http://www.XXXXXXX.com/XXXXX/XXXXXX.php/Index/getUserOpenId"); $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=614#wechat_redirect"; header('location:'.$url); }</code>
3. 사용자의 access_token 획득
<code> function getUserOpenId(){ $appid = "我的ID"; $appsecret = "我的secret"; $code=$_GET['code']; //2.获取到网页授权的access_token $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_cod"; //3.拉取用户的opendi $res = $this->https_request($url); var_dump($code); var_dump("<hr >"); var_dump($url); var_dump("<hr >"); dump($res); }</code>
웹 인증 인터페이스의 코드를 얻을 수 없으며 인쇄된 세 가지 값은 다음과 같습니다.
<code>NULL string(5) " " string(149) "https://api.weixin.qq.com/sns/oauth2/access_token?appid=我的ID &secret=我的secret&code=&grant_type=authorization_cod" string(5) " " array(2) { ["errcode"]=> int(41008) ["errmsg"]=> string(47) "missing code, hints: [ req_id: 3MmDtA0251s113 ]" } </code>
문제가 발견되었습니다. 저와 같은 많은 사람들이 문제를 발견하지 못한 것 같습니다. 아래와 같이 코드로 되어 있어야 합니다. 공식 홈페이지에서 링크를 복사했는데 한 글자가 빠졌네요... 그런데 여기는 어셈블리 파라메타가 없어서 못찾았습니다...
1. 타사 인터페이스 호출 방법
<code>function https_request($url,$type='get',$res='json',$data = ''){ //1.初始化curl $curl = curl_init(); //2.设置curl的参数 curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,2); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); if ($type == "post"){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } //3.采集 $output = curl_exec($curl); //4.关闭 curl_close($curl); if ($res == 'json') { return json_decode($output,true); } } </code>
2. 사용자의 openid를 가져옵니다
<code> function getBaseInfo(){ $appid = "我的ID"; $redirect_uri = urlencode("http://www.XXXXXXX.com/XXXXX/XXXXXX.php/Index/getUserOpenId"); $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=614#wechat_redirect"; header('location:'.$url); }</code>
3. 사용자의 access_token 획득
<code> function getUserOpenId(){ $appid = "我的ID"; $appsecret = "我的secret"; $code=$_GET['code']; //2.获取到网页授权的access_token $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_cod"; //3.拉取用户的opendi $res = $this->https_request($url); var_dump($code); var_dump("<hr >"); var_dump($url); var_dump("<hr >"); dump($res); }</code>
웹 인증 인터페이스의 코드를 얻을 수 없으며 인쇄된 세 가지 값은 다음과 같습니다.
<code>NULL string(5) " " string(149) "https://api.weixin.qq.com/sns/oauth2/access_token?appid=我的ID &secret=我的secret&code=&grant_type=authorization_cod" string(5) " " array(2) { ["errcode"]=> int(41008) ["errmsg"]=> string(47) "missing code, hints: [ req_id: 3MmDtA0251s113 ]" } </code>
문제가 발견되었습니다. 저와 같은 많은 사람들이 문제를 발견하지 못한 것 같습니다. 아래와 같이 코드로 되어 있어야 합니다. 공식 홈페이지에서 링크를 복사했는데 한 글자가 빠졌네요... 그런데 여기는 어셈블리 파라메타가 없어서 못찾았습니다...
어젯밤 QQ에서 친구가 나에게 이런 질문을 한 게 우연이었다. 똑같은 문제입니다.
신뢰할 수 있는 도메인 이름을 설정하셨나요
코드를 어떻게 얻었는지 적어주셔야 합니다. . .
이런 경우에는 오류가 보고되는지 확인하기 위해 의도적으로 잘못된 앱 ID를 작성하고, 처음으로 점프하는 인터페이스를 사용하여 의도적으로 잘못된 앱 ID를 작성합니다
전에 본 데모와 제가 작성한 코드에서는 모든 것을 하나의 메소드로 작성했습니다. 방금 작성한 메소드가 이 문제 때문에 얻을 수 없는 것일까요? 코드를 함께 작성해 볼 수 있습니다.
예를 들어
공용 함수 인덱스(){
<code>if($_GET['code']){ //第二步 //第三部 }else{ //第一步跳转 //回调地址也是回调到这个方法,获取回调地址,用我下面这个地址来取得当前的地址作为回调,getCurUrl() }</code>
}
/**
php는 현재 방문의 전체 URL 주소를 가져옵니다
*/
함수 getCurUrl() {
<code>$url = 'http://'; if (isset($_SERVER ['HTTPS']) && $_SERVER ['HTTPS'] == 'on') { $url = 'https://'; } if ($_SERVER ['SERVER_PORT'] != '80') { $url .= $_SERVER ['HTTP_HOST'] . ':' . $_SERVER ['SERVER_PORT'] . $_SERVER ['REQUEST_URI']; } else { $url .= $_SERVER ['HTTP_HOST'] . $_SERVER ['REQUEST_URI']; } // 兼容后面的参数组装 if (stripos($url, '?') === false) { $url .= '?t=' . time(); } return $url;</code>
}
location.href로 = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx2d6844d53934185f&secret=551ffeb8a5bbd50766bd340141c0963f&code=&grant_type=authorization_cod"
oAuth2.0을 기반으로 합니다. 프로세스를 참조하세요: wapbaike.baidu.com/item/OAuth2.0/6788617?adapt=1&fr=aladdin
죄송합니다...
이틀이 지났지만 아직 결과가 없습니다. 도와주실 수 있나요
세 번째 단계에서 코드가 get 매개변수에 의해 전달되는 이유는 무엇입니까? 이전에 access_token에서 얻은 코드여야 합니다. 오류 메시지는 코드 매개변수가 누락되었다는 것입니다. 코드를 얻으려면 이전 단계를 확인하세요.