Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细

Android安卓开发中集成微信二维码登录的步骤:

写在前面的:

该教程使用AS作为演示,使用ecplise请参照微信官方文档下载相应jar等所需参考文档和资源。在最后,我会附上这个Activity的java文件、封装的加密文件SHA、我自己的MyApiUtil、和我自己用来映射返回数据的bean类,希望对你有所帮助,相信阅读之后的你一定能快速集成完毕。

1、依赖:

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’
如下图:
Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细_第1张图片

2、在Activity中回调OAuthListener接口:

在这里插入图片描述
onAuthGotQrcode( String qrcodeImgPath, byte[] bytes ) //返回的二维码
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length) //获取二维码图片。
onQrcodeScanned() //扫描二维码之后,回调该方法
onAuthFinish(OAuthErrCode errCode, String authCode) //用户操作后,返回的结果(同意权限or异常)
Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细_第2张图片
在Activity中:
private IDiffDevOAuth oauth; //定义一下
oauth = DiffDevOAuthFactory.getDiffDevOAuth(); //onCreate方法里调用一下

3、各个步骤的url如下图:其中appid和secret这两个字段为在微信平台申请的个人唯一参数。在这里插入图片描述

4、下面我们将分步来完成演示上述url的网络请求和数据解析,并会附上代码示例。

4-1、第一步:获取字段accesstoken(GET方法)

First: URL:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=放你的appid&secret=放你的secret

代码示例:

Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细_第3张图片

4-2、第二步:获取字段Ticket(GET方法)

Second: URL:

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=上一步获取的accesstoken&type=2
Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细_第4张图片

4-3、第三步:生成二维码

完成这一步骤所需参与的字段有:
(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;
}

}
oauth.auth(分别传上述几个字段);如下图:
在这里插入图片描述

4-4、第四步:获取扫码用户的token和openid(GET方法)

我们在步骤2中提到的回调接口中的onAuthFinish(OAuthErrCode errCode, String authCode) 方法中进行下一步(其实只是为了拿到authCode这个字段)

Third: URL:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=你的appid&secret=你的secret&code=你的code&grant_type=authorization_code
Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细_第5张图片

4-5、第五步:获取扫码用户的各项信息(GET方法)

Fourth: URL:

https://api.weixin.qq.com/sns/userinfo?access_token=上一步拿到的access_token&openid=上一步拿到的openid
Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细_第6张图片

写在后面的:

截止到这里,相信你应该已经完成了,我会附上这个Activity的java文件、封装的加密文件SHA、我自己的MyApiUtil、和我自己用来映射返回数据的bean类,希望对你有所帮助。以上写法的目的均为更好、更易帮助大家去理解每一步,并不是代码的最优写法,大神还请放过。

百度网盘下载就ok了,设置的永久有效
链接:https://pan.baidu.com/s/1zONZnxL9s6eYAHg6SVGxNA
提取码:q6fk

注:该教程为原创教程,转发使用等请经过允许和标明出处。

你可能感兴趣的:(android,微信,二维码,android,微信,二维码)