资讯专栏INFORMATION COLUMN

调用微信接口token的问题

phoenixsky / 1673人阅读

摘要:相信大家对微信公众号,小程序也都不陌生,那么在开发公众号,小程序的时候需要调用到微信的接口,固然就会遇到的问题,有哪些问题,以及怎么解决的呢,我们继续往下看。刷新的方法相关资料微信

前言

微信的影响力众所周知,越来越多的人也都离不开它,工作,生活,社交的好帮手。相信大家对微信公众号,小程序也都不陌生,那么在开发公众号,小程序的时候需要调用到微信的接口,固然就会遇到token的问题,有哪些问题,以及怎么解决的呢,我们继续往下看。

问题一:微信接口返回"errcode":48001,"errmsg":"api unauthorized”

原因有下面几个:
1、服务号可能没认证,接口功能未授权
2、 appID和appsecret用的还是你申请的订阅号里面(个人只能申请公众号类型为订阅号)
3、用 scope=snsapi_base,获取用户的基本信息
4、用 scope= snsapi_userinfo ,获取用户的基本信息access_token失效了

解决办法:
1、确认公众号已获得该接口的权限,可在公众平台官网-开发中心页中查看接口权限
2、把项目里面的appID和appsecret改成测试公众号的
3、 scope=snsapi_base不能用于获取用户基本信息
4、 access_token 失效后,可以使用 refresh_token 调用接口https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={0}&grant_type=refresh_token&refresh_token={1} 重新获取 access_token(有效期7200秒)

问题二:微信接口返回 "errcode": 40001,"errmsg": "invalid credential, access_token is invalid or not latest

原因:
1、token失效或者不是最新的

解决办法:
(1)把获取到的token存入到缓存中,设置过期时间大约为3分钟,每次获取token时优先从缓存里获取
(2)做刷新token的功能。调用接口https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token={0}可查token,接口返回errcode= 40001时,把缓存里的token清除,然后再重新获取。

附上代码
1、获取token的方法
     public function getaccess_token()
     {        
         load()->model("account’);    
        $account_api = WeAccount::create();     
        $token = $account_api->getAccessToken();    
        $result = $this->clearAccessToken($token,$account_api);    
       if(!empty($result["token"])){        
             $token = $result["token"];     
       }    
       if(is_error($token)){        
            $this->echoMsg(0,"access_token获取失败。");     
       }    
      return $token;
    }
2、刷新token的方法
   public function clearAccessToken($access_token,$account_api)
   {        
    global $_W;    
    if(is_error($access_token)){         
        return $access_token;    
    }    
    $url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=" . $access_token;     $response = ihttp_request($url);    
    $result = @json_decode($response["content"], true);    
    if(empty($result)) {        
        return $response;    
    }     
    if (!empty($result) && $result[‘errcode’] = ‘40001’) {                            cache_delete(cache_system_key("accesstoken_key", array("key" => $_W["account"]["key"])));         
        return array("token"=>$account_api->getAccessToken());    
    }        
    return true;
}
相关资料

微信errcode":48001,"errmsg":"api unauthorized

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29509.html

相关文章

  • 调用微信接口token问题

    摘要:相信大家对微信公众号,小程序也都不陌生,那么在开发公众号,小程序的时候需要调用到微信的接口,固然就会遇到的问题,有哪些问题,以及怎么解决的呢,我们继续往下看。刷新的方法相关资料微信 前言 微信的影响力众所周知,越来越多的人也都离不开它,工作,生活,社交的好帮手。相信大家对微信公众号,小程序也都不陌生,那么在开发公众号,小程序的时候需要调用到微信的接口,固然就会遇到token的问题,有哪...

    RaoMeng 评论0 收藏0
  • vue使用微信JS-SDK实现分享功能

    摘要:最近开发微信公众号内嵌页面,使用搭建的项目,由于业务需求,需要实现微信自定义分享功能,所以项目中集成微信。 最近开发微信公众号内嵌H5页面,使用vue搭建的项目,由于业务需求,需要实现微信自定义分享功能,所以项目中集成微信JS-SDK。微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、...

    ShowerSun 评论0 收藏0
  • 使用php调用微信接口上传永久素材

    摘要:功能需求公司新开的公众号需要将公司平台现在的所有精品文章都导入,手动导入会有很多的工作量,所以采用自动化同步文章的方式来达到效果开发说明微信提供了新增永久素材的接口,本次功能是基于这个接口进行数据同步的使用到的接口获取永久素材列表接口新增永 功能需求 公司新开的公众号需要将公司平台现在的所有精品文章都导入,手动导入会有很多的工作量,所以采用自动化同步文章的方式来达到效果 开发说明 微信...

    niuxiaowei111 评论0 收藏0
  • 微信小程序登录那些事

    摘要:小程序的登录跟平时自己这种登录验证还不太一样,多了一个角色,那就是微信服务器。的有效期默认是小时,当用户一直在使用小程序的话会自动刷新,这个是由微信这边来维护的。 最近团队在开发一款小程序,都是新手,一边看文档,一边开发。在开发中会遇到各种问题,今天把小程序登录这块的流程整理下,做个记录。 小程序的登录跟平时自己APP这种登录验证还不太一样,多了一个角色,那就是微信服务器。 showI...

    kid143 评论0 收藏0
  • vue如何通过NodeJs本地获取微信access_token及签名,并调用微信接口

    摘要:一直都想搞一下微信公众号网页开发公司忙没有时间自己也没开发过所以也没有头绪前两天通过自己的摸索以及自行查找的资料终于通过在本地成功的获取到了微信的及签名以及调用微信的接口因为笔者自己在做的时候费了挺长时间没有找到一个相对完整详细的一个项目借 一直都想搞一下微信公众号网页开发,公司忙没有时间自己也没开发过所以也没有头绪,前两天通过自己的摸索以及自行查找的资料,终于通过nodejs在本地成...

    jhhfft 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<