您好,欢迎访问一九零五行业门户网

微信网页授权接口为什么获取不到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); } }

二.获取用户的openid
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); }

三.获取用户的access_token
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(); var_dump($url); var_dump(); dump($res); }

获取不到网页授权接口的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。从官网拷贝的链接,不知道咋弄的,少了一个字母...然而这里不需要拼装参数,所以一直没发现...
回复内容: 一.调用第三方接口的方法
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); } }

二.获取用户的openid
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); }

三.获取用户的access_token
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(); var_dump($url); var_dump(); dump($res); }

获取不到网页授权接口的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上问我这问题了。一模一样的问题。
你设置了可信域名吗
你总得写一下你是怎么获取 code的吧。。。
那这样子,你故意把appid写错,看看会不会报错,就第一次跳转的那个接口,故意把appid写错
我之前看的demo和自己写的代码,我都是把所有的东西写到了一个方法里面,刚才给你写的那个方法,我拆成了两个方法,会不会是因为这个问题,才没法得到code,你写到一起试试。
比方说
public function index(){
if($_get['code']){ //第二步 //第三部}else{ //第一步跳转 //回调地址也是回调到这个方法,获取回调地址,用我下面这个地址来取得当前的地址作为回调,getcururl()}
}
/**
php获取当前访问的完整url地址
*/
function getcururl() {
$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;
}
要 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
麻烦了...
2天了还是没结果,能帮下忙吗
第三步为什么code时get传参过来的,之前应该有用access_token获取到的code吧;报错内容是缺少code参数,检查下之前获取code的步骤
其它类似信息

推荐信息