android之微信最新版的sdk接入微信授权登陆和数据回调

本文主要是介绍android之微信最新版的sdk接入微信授权登陆和数据回调,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微信授权登陆和数据回调

本人用的是最新版的sdk,开发工具是Eclipse(因为现在很多人都是用的AndroidStudio,所以Eclipse的例子会越来越少。其实两者用法大同小异。)。

  • 首先申请appID,AppSeort等(这个很简单,开发者应该都知道)

  • 接入sdk,先去注册微信

private IWXAPI api;
/***在onCreate()方法里*/
api = WXAPIFactory.createWXAPI(this, WXConstants.APP_ID,true);
//注册微信
api.registerApp(WXConstants.APP_ID); 
  • 发送微信授权登陆请求
    踩坑经验:
    ————-请注意你的开发者资格认证是否通过,若不通过则会出现一下情况:

    开发者资格认证没有通过

       //发起登录请求SendAuth.Req req = new SendAuth.Req();// 外部应用请求的权限范围req.scope = "snsapi_userinfo";//外部应用本身用来标识其请求的唯一性,验证完成后,将由微信终端回传,req.state = "wechat_sdk_demo_test";api.sendReq(req);
  • 进行回调
    在WXEntryActivity的onResp(BaseResp arg0)方法中进行回调,会得到一个code.通过这个code调用一个接口获取到access_token和OpenID的值,之后再通过access_token以及openID调用获取用户信息的接口-来获取用户的数据
// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法@Overridepublic void onResp(BaseResp resp) {Log.i("TAG-02", "微信分享的第二个回调");int result = 0;switch (resp.errCode) {case BaseResp.ErrCode.ERR_OK://成功/***  微信登陆*/if (resp instanceof SendAuth.Resp) {// 获取codeString code = ((SendAuth.Resp) resp).code;// 通过code获取授权口令access_tokenrequestOpenId(code);}break;case BaseResp.ErrCode.ERR_USER_CANCEL:result = R.string.errcode_cancel;//发送取消break;case BaseResp.ErrCode.ERR_AUTH_DENIED:result = R.string.errcode_deny; //发送返回break;default:result = R.string.errcode_unknown;break;}finish();}/***  开辟子线程* @param token*/private void requestOpenId(final String code) {// 开启线程来发起网络请求new Thread(new Runnable() {@Overridepublic void run() {String urlstr = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+WXConstants.APP_ID+"&secret="+WXConstants.App_Scere+ "&code="+code+"&grant_type=authorization_code" ;//获取 网上 数据String httpUrl = WXConstants.httpUrl(urlstr);// JsonJSONObject jsObj;try {jsObj = new JSONObject(httpUrl);//获取到   openidString opendId = jsObj.getString("openid").toString().trim();//获取到  access_tokenString access_token  =  jsObj.getString("access_token").toString().trim();/***  用openid和access_token获取  用户信息*/getUserInfo(opendId,access_token);} catch (JSONException e) {e.printStackTrace();}}}).start();/***  用于  获取  用户  信息* @param opendId* @param access_token*/private void getUserInfo(String opendId, String access_token) {String path = "https://api.weixin.qq.com/sns/userinfo?access_token="+ access_token+ "&openid="+ opendId;//用户信息String httpUrl = WXConstants.httpUrl(path);}
  • 上边这样就可以授权登陆和获取用户信息了,快试试吧,童鞋们!!!

福利送给你们:
——————WXConstantts.httpUrl();

public class WXConstants {// APP_ID 替换为你的应用从官方网站申请到的合法appIdpublic static String APP_ID = "";  // APP_ID 替换为你的应用从官方网站申请到的合法appScopepublic static String App_Scere =  "";public static String httpUrl(String path){String jsonStr = null ;HttpURLConnection connection = null;try {   // 获得URL对象URL url = new URL(path);// 获得HttpURLConnection对象connection = (HttpURLConnection) url.openConnection();// 默认为GET请求connection.setRequestMethod("GET");// 设置 链接 超时时间connection.setConnectTimeout(5000);// 设置 读取 超时时间connection.setReadTimeout(8000);// 设置是否从HttpURLConnection读入,默认为trueconnection.setDoInput(true);connection.setDoOutput(true);// 请求相应码是否为200(OK)if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {// 下面对获取到的输入流进行读取InputStream in   = connection.getInputStream();BufferedReader reader   = new BufferedReader(new InputStreamReader(in));StringBuilder response  = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}jsonStr = response.toString();} } catch (Exception e) {e.printStackTrace();} finally {// 关闭连接if (connection != null) {connection.disconnect();}}return jsonStr;}
}

这篇关于android之微信最新版的sdk接入微信授权登陆和数据回调的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722048

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影