微信开发平台Android SDK测试问题总结
关于 Server response error code:404, error:{“ret”:-1, “msg”:“invalid appkey”}
解决方法:
把 dependencies 里的
com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+
换成
com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+
前者是集成微信统计的,后者没有集成微信统计。
换了之后,就不再提示 Server response error code:404, error:{"ret":-1, "msg":"invalid appkey"} 了
关于App签名
在微信开放平台创建一个新的应用时,需要填写APP的签名和包名,这时候要注意 两点:
1.签名是APP要正式发布时的签名,而不是你平时调试时Debug.keystore的签名。并且是签名中的MD5值,而不是SHA1或SHA256。一般情况下我们使用cmd命令行查看签名,将查出的MD5值中的冒号去掉并且英文字母小写即可。
就要转变成:fea19c0271a2daf97f1c2b61d7658944
关于没有错误还是提示错误
因为为有微信有缓存机制,所以可能需要卸载微信重新安装或者换手机测试。
注:特别是在服务器上修改了签名,包名之类的,都需要卸载微信App重新安装才能生效,否则微信会一直使用老的缓存,导致错误一直发生。
关于demo获取Token时onNewIntent未被调用的问题
今天有位同事请求帮忙调试微信登录问题,他遇到了以下2个问题,所以,写篇日志备忘,如果有其它朋友遇到此类问题,都可以照此解决!
平时在开发中,有些开发者经常会遇到微信登录SDK登录时,无法调起微信客户端,以及登录完毕后无法回调的情况
这些情况,大概原因如下,请对号入座:
1.包名和签名,跟微信后台登记的不一样,导致无法调起微信
2.回调类WXEntryActivity 的包名和 application Id不一致,导致无法回调
针对上面情况的简短解答:
1、仔细检查微信后台登记的包名和签名是否正确!然后再测试
2、使用Android Studio开发后,Application Id和package Name 可以不一致,但是你的微信回调类,谨记一点要跟微信后台登记注册的包名一致,否则无法回调!!很多人栽倒这上面
来自:https://www.cnblogs.com/yejiurui/p/6900376.html
关于获取Token出现:{“errcode”:40029,“errmsg”:“invalid code, hints: [ req_id:… ]”}的问题
这个错误在网上几乎没有办法查,因为搜索出来的全是小程序、公众号网页开发过程中遇到的这个错误。
不过看过他们描述的,了解了微信登录并不是直接从微信获取了access_token
,而只是获取了code
,需要从微信服务器获取access_token
,查看WXEntryActivity.java
代码中ConstantsAPI.COMMAND_SENDAUTH
的处理:
SendAuth.Resp authResp = (SendAuth.Resp)resp;
final String code = authResp.code;
NetworkUtil.sendWxAPI(handler, String.format("https://api.weixin.qq.com/sns/oauth2/access_token?" +
"appid=%s&secret=%s&code=%s&grant_type=authorization_code", "wxd930ea5d5a258f4f",
"1d6d1d57a3dd063b36d917bc0b44d964", code), NetworkUtil.GET_TOKEN);
这里的appid是写死的,需要改成全局变量才有效果。更改如下:
SendAuth.Resp authResp = (SendAuth.Resp)resp;
final String code = authResp.code;
NetworkUtil.sendWxAPI(handler, String.format("https://api.weixin.qq.com/sns/oauth2/access_token?" +
"appid=%s&secret=%s&code=%s&grant_type=authorization_code", Constants.APP_ID,
Constants.APP_SEC, code), NetworkUtil.GET_TOKEN);
当然,这个AppSecret放到App代码中是不合适的,因为这样别人反编译Apk就可以拿到,应该封装一下放到自己的服务器上。
微信开发平台Android SDK之HelloWorld
Android平台
应用下载地址:未填写
应用签名:ce187ed67e05c2d8879bf66bbfdfc8b9
包名:net.sourceforge.simcpux
public static final String APP_ID = "wxxxxx";
public static final String APP_SECRET = "55xxxx";
编译启动该HelloWorld即可使用。再进一步可以编译好,直接在手机上填写AppID和AppSecret。