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

1 篇文章 0 订阅
1 篇文章 0 订阅

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’
如下图:
在这里插入图片描述

2、在Activity中回调OAuthListener接口:

在这里插入图片描述

onAuthGotQrcode( String qrcodeImgPath, byte[] bytes )           //返回的二维码
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length)        //获取二维码图片。
onQrcodeScanned()             //扫描二维码之后,回调该方法
onAuthFinish(OAuthErrCode errCode, String authCode)         //用户操作后,返回的结果(同意权限or异常)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190929114716659.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjY5MDk4,size_16,color_FFFFFF,t_70
在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

代码示例:

在这里插入图片描述

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

Second: URL:

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=上一步获取的accesstoken&type=2
在这里插入图片描述

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
在这里插入图片描述

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

Fourth: URL:

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

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

评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值