前言

微信的影响力众所周知,越来越多的人也都离不开它,工作,生活,社交的好帮手。相信大家对微信公众号,小程序也都不陌生,那么在开发公众号,小程序的时候需要调用到微信的接口,固然就会遇到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://segmentfault.com/a/1190000016652884

调用微信接口token的问题的更多相关文章

  1. C# 调用微信接口的代码

    调用微信接口前需要准备的内容. 1.微信公众平台的appid 2.微信公众平台的secret 3..获取tokenid 4.获取ticket 5.生成签名的随机串 6.生成签名的时间戳 7.生成签名 ...

  2. C# 关于调用微信接口的代码

    调用微信接口前需要准备的内容. 1.微信公众平台的appid 2.微信公众平台的secret 3..获取tokenid 4.获取ticket 5.生成签名的随机串 6.生成签名的时间戳 7.生成签名 ...

  3. C# 调用微信接口上传素材和发送图文消息

    using Common;using Newtonsoft.Json.Linq;using System;using System.IO;using System.Net;using System.T ...

  4. JAVA调用微信接口实现页面分享功能(分享到朋友圈显示图片,分享给朋友)

    钉钉提供的内网穿透之HTTP穿透:https://www.cnblogs.com/pxblog/p/13862376.html 网页分享到微信中如何显示标题图,如果自定义标题图,描述,显示效果如下 官 ...

  5. vue项目中分享到朋友圈,调用微信接口

    虽然微信提供了jssdk,不代表可以点击按钮进行分享到朋友圈,是需要微信自带的浏览器右上角进行分享.手机浏览器需要浏览器支持分享到朋友圈的分享机制. 微信jssdk地址: https://mp.wei ...

  6. [实例]JAVA调用微信接口发送图文消息,不用跳到详情页

    package com.test; import java.io.IOException; import java.io.InputStream; import java.io.OutputStrea ...

  7. HTML5 页面调用微信接口

    参考微信微信官方文档JS_SDK:https://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.B ...

  8. 前台调用微信接口成功还报Network Error

    前台   vue+springboot项目 this.api({ url:"https://.....",//微信路径 method:"post", param ...

  9. 调用 微信接口报错 {"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}

    如下截图,仅为备份,本文转载地址: http://www.cnblogs.com/liaolongjun/p/6080240.html 以下正文↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ...

随机推荐

  1. MapWindowPoints

    中文名 MapWindowPoints Windows CE 1.0及以上版本 头文件 winuser.h 库文件 user32.lib MapWindowPoints函数把相对于一个窗口的坐标空间的 ...

  2. Aliyun-CentOS7.3 Init

    Aliyun-CentOS7.3 Init 一.概述 查看系统版本 $ cat /etc/redhat-release $ uname -a 修改主机名 $ vi /etc/hostname $ re ...

  3. 2016.7.12 在navicat中用sql语句建表

    参考资料: http://jingyan.baidu.com/article/f0e83a25a8c4b022e5910116.html 即新建query,然后run. (1)点击要新建表的位置,选择 ...

  4. Android开发之短信验证码示例

    在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据 聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务.免费提供从天气查询.空气质量.地图坐标到金融 ...

  5. 可软件定义的存储逻辑——Efficient and agile storage management in software defined environments

            note:写这个或许算是翻译,又或算是对这个论文[1]的理解,又或者仅仅是我的看法.         这篇论文和IOFlow相比較,更加注重软件定义存储的框架(利用已有的框架来创建新的 ...

  6. html5,audio音乐播放器

    最终,做了自己原来一直想要实现的事儿.得出的结果是,有些事儿一旦開始做了,那么它就并非非常难. 如今的我,正听着自己的播放器放出的<光辉岁月>写这篇周六清晨的博文.写的不是非常好.但也请各 ...

  7. poj 1328 Radar Installation 【贪心】【区间选点问题】

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 54798   Accepted: 12 ...

  8. Robot framework 引入 Selenium2Library 类库:

    在用robotframework-selenium2library做web自动化测试时候,首先要将Selenium2Library导入到Test Suite中,在导入Selenium2Library时 ...

  9. springmvc结合base64存取图片到mysql

    简单介绍: 1.jsp通过MultipartFile上传图片到后台 2.后台把上传的图片通过base64转换成字符串存到mysql 3.从mysql读取图片字符串,通过base64反转成byte数组, ...

  10. Android 逐帧动画( Drawable 动画),这一篇就够了

    前言 作为 Android 最常见的两种动画形式,逐帧动画( Drawable 动画),有着极其广泛的应用,它的原理与早起的电影以及 GIF 类似,就是把一张的图,按顺序快速切换,这样一来看上去就好像 ...