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

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda