>  기사  >  백엔드 개발  >  WeChat 웹페이지 인증 인터페이스가 코드를 얻을 수 없는 이유(해결됨)

WeChat 웹페이지 인증 인터페이스가 코드를 얻을 수 없는 이유(해결됨)

WBOY
WBOY원래의
2016-12-01 01:27:273552검색

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>

문제가 발견되었습니다. 저와 같은 많은 사람들이 문제를 발견하지 못한 것 같습니다. 아래와 같이 코드로 되어 있어야 합니다. 공식 홈페이지에서 링크를 복사했는데 한 글자가 빠졌네요... 그런데 여기는 어셈블리 파라메타가 없어서 못찾았습니다...
WeChat 웹페이지 인증 인터페이스가 코드를 얻을 수 없는 이유(해결됨)

답글 내용:

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>

문제가 발견되었습니다. 저와 같은 많은 사람들이 문제를 발견하지 못한 것 같습니다. 아래와 같이 코드로 되어 있어야 합니다. 공식 홈페이지에서 링크를 복사했는데 한 글자가 빠졌네요... 그런데 여기는 어셈블리 파라메타가 없어서 못찾았습니다...
WeChat 웹페이지 인증 인터페이스가 코드를 얻을 수 없는 이유(해결됨)

어젯밤 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에서 얻은 코드여야 합니다. 오류 메시지는 코드 매개변수가 누락되었다는 것입니다. 코드를 얻으려면 이전 단계를 확인하세요.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.