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

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

更多相关文章

  1. android studio 3.x 以上版本的Native JNI/NDK 调用c++/c语言程
  2. Android WebView 不支持 H5 input type="file" 解决方法
  3. 在Android App开发中实现任意Java方法的拦截
  4. 关于Android长按出现复制粘贴栏在顶部占位问题解决方法
  5. Android进程保活方法 --转自腾讯Bugly公众号
  6. Android 基于Zxing扫码实现(三)、从相册选取二维码
  7. win10通过网线连接树莓派和PC方法(Android things)
  8. Android root检测方法小结

随机推荐

  1. 第十章 Android性能优化
  2. Android(安卓)定位
  3. Android(安卓)XML解析
  4. Android(安卓)Contacts(二)—— SMS 短信
  5. [Boot]Android系统启动-综述
  6. Android学习二:Resources
  7. Android一些关于分辨率和布局的设置
  8. android webview 遇到的问题:external/chr
  9. Android(安卓)framework源码之JNI实现过
  10. Android(安卓)使用 Ksoap2 出现的低级错