该教程使用AS作为演示,使用ecplise请参照微信官方文档下载相应jar等所需参考文档和资源。在最后,我会附上这个Activity的java文件、封装的加密文件SHA、我自己的MyApiUtil、和我自己用来映射返回数据的bean类,希望对你有所帮助,相信阅读之后的你一定能快速集成完毕。
implementation ‘com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+’
我使用的是okhttp进行网络请求、Gson解析来解析返回的json数据,也附上我使用的这两个依赖:
implementation ‘com.squareup.okhttp3:okhttp:3.2.0’
implementation ‘com.google.code.gson:gson:2.2.4’
如下图:
onAuthGotQrcode( String qrcodeImgPath, byte[] bytes ) //返回的二维码
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length) //获取二维码图片。
onQrcodeScanned() //扫描二维码之后,回调该方法
onAuthFinish(OAuthErrCode errCode, String authCode) //用户操作后,返回的结果(同意权限or异常)
在Activity中:
private IDiffDevOAuth oauth; //定义一下
oauth = DiffDevOAuthFactory.getDiffDevOAuth(); //onCreate方法里调用一下
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=放你的appid&secret=放你的secret
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=上一步获取的accesstoken&type=2
完成这一步骤所需参与的字段有:
(1)、appid(还是那个唯一参数)
(2)、noncestr(随机字符串,可用Random生成,上图中有)
(3)、 ticket(上一步获取的Ticket)
(4)、timestamp(时间戳,上图中有获取时间戳的方式)
其中sha字段进行了数据加密,上图中有展示:EncrypUtils.java附上代码:
public class EncryptUtils {
public static String getSHA(String info) {
byte[] digesta = null;
try {
// 得到一个SHA-1的消息摘要
MessageDigest alga = MessageDigest.getInstance(“SHA-1”);
// 添加要进行计算摘要的信息
alga.update(info.getBytes());
// 得到该摘要
digesta = alga.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
// 将摘要转为字符串
String rs = byte2hex(digesta);
return rs;
}
private static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (byte aB : b) {
stmp = (Integer.toHexString(aB & 0XFF));
if (stmp.length() == 1) {
hs = hs + "0" + stmp;
} else {
hs = hs + stmp;
}
}
return hs;
}
我们在步骤2中提到的回调接口中的onAuthFinish(OAuthErrCode errCode, String authCode) 方法中进行下一步(其实只是为了拿到authCode这个字段)
https://api.weixin.qq.com/sns/oauth2/access_token?appid=你的appid&secret=你的secret&code=你的code&grant_type=authorization_code
https://api.weixin.qq.com/sns/userinfo?access_token=上一步拿到的access_token&openid=上一步拿到的openid
截止到这里,相信你应该已经完成了,我会附上这个Activity的java文件、封装的加密文件SHA、我自己的MyApiUtil、和我自己用来映射返回数据的bean类,希望对你有所帮助。以上写法的目的均为更好、更易帮助大家去理解每一步,并不是代码的最优写法,大神还请放过。
百度网盘下载就ok了,设置的永久有效
链接:https://pan.baidu.com/s/1zONZnxL9s6eYAHg6SVGxNA
提取码:q6fk