android之微信最新版的sdk接入微信授权登陆和数据回调
来源:互联网 发布:网络拓扑结构及配置 编辑:程序博客网 时间:2024/04/29 11:36
微信授权登陆和数据回调
本人用的是最新版的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调用获取用户信息的接口-来获取用户的数据
// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法 @Override public void onResp(BaseResp resp) { Log.i("TAG-02", "微信分享的第二个回调"); int result = 0; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK://成功 /** * 微信登陆 */ if (resp instanceof SendAuth.Resp) { // 获取code String code = ((SendAuth.Resp) resp).code; // 通过code获取授权口令access_token requestOpenId(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() { @Override public 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); // Json JSONObject jsObj; try { jsObj = new JSONObject(httpUrl); //获取到 openid String opendId = jsObj.getString("openid").toString().trim(); //获取到 access_token String 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 替换为你的应用从官方网站申请到的合法appId public static String APP_ID = ""; // APP_ID 替换为你的应用从官方网站申请到的合法appScope public 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读入,默认为true connection.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; }}
阅读全文
1 0
- android之微信最新版的sdk接入微信授权登陆和数据回调
- 微信授权登陆接入第三方App(Android)
- android接入微信登录点击授权登录后如何接收微信的返回数据
- Android 微信授权登陆
- 微信公众号(服务号)接入开发(2)之微信授权登陆
- 微信公众号(服务号)接入开发之微信授权登陆
- 友盟之微信授权登陆总结(微信授权回调响应问题)
- 微信授权登陆
- 微信授权登陆接入第三方App(步骤总结)Android。
- 微信授权登陆接入第三方App(步骤总结)Android。
- 微信授权登陆接入第三方App(步骤总结)Android
- 微信授权登陆接入第三方App(步骤总结)Android。
- Android微信SDK接入总结
- Android微信SDK分享功能接入
- Android微信SDK登录功能接入
- 微信查看最新版的SDK
- Android微信授权app登陆
- 微信sdk应用消息的接入(android)
- Mac下的.DS_Store文件删除,关掉这个功能
- html+css+js基础学习
- 使用 Android 自定义通知Notification时遇到的问题
- 如果遇到压缩的网页怎么办?
- 正则表达式基础讲解
- android之微信最新版的sdk接入微信授权登陆和数据回调
- 使用SharedPreferences实现记住密码和自动登录
- python是通过thrift来操作hbase的示例程序
- 全文检索引擎Solr系列—–全文检索基本原理
- mysql 日期值insert 到 oracle
- jsp中使用Cookie统计网站访问次数
- 详解contextConfigLocation|Spring启动过程详解
- angularjs的$window对象
- composer的使用和安装