PS: sendAuthRequest拿到code,通过code拿到access_token和openId,access_token可以拿到用户的信息

http://blog.csdn.net/haovip123/article/details/50503176

需求:接入微信支付,需要获取 OpenID。

微信开放平台上面对大多数步骤都有详细的介绍。但是……,还是自己梳理一下吧。

1.申请AppID。

    (微信支付或微信登录等功能需要进行开发者资质认证,准备好300大洋)

2.下载最新SDK。

3.导入jar包,并配置权限。

4.代码实现

①  注册到微信
  1. // 通过WXAPIFactory工厂,获取IWXAPI的实例
  2. api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, true);
  3. api.handleIntent(getIntent(), this);
  4. // 将该app注册到微信
  5. api.registerApp(Constants.APP_ID);
②  发送请求
  1. final SendAuth.Req req = new SendAuth.Req();
  2. req.scope = "snsapi_userinfo";
  3. req.state = "wechat_sdk_demo_test";
  4. api.sendReq(req);
③ 接受微信请求(获取code值)
  1. // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
  2. @Override
  3. public void onResp(BaseResp resp) {
  4. int result = 0;
  5. SendAuth.Resp re = ((SendAuth.Resp) resp);
  6. String code = re.code;
  7. switch (resp.errCode) {
  8. case BaseResp.ErrCode.ERR_OK:
  9. result = R.string.errcode_success;
  10. getOpenID(code);
  11. break;
  12. case BaseResp.ErrCode.ERR_USER_CANCEL:
  13. result = R.string.errcode_cancel;
  14. break;
  15. case BaseResp.ErrCode.ERR_AUTH_DENIED:
  16. result = R.string.errcode_deny;
  17. break;
  18. default:
  19. result = R.string.errcode_unknown;
  20. break;
  21. }
  22. Toast.makeText(this, result, Toast.LENGTH_LONG).show();
  23. Toast.makeText(this, code, Toast.LENGTH_LONG).show();
  24. }

通过code获取access_token,code等数据
  1. private void getOpenID(String code) {
  2. // APP_ID和APP_Secret在微信开发平台添加应用的时候会生成,grant_type 用默认的"authorization_code"即可.
  3. String urlStr = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+Constants.APP_ID+"&secret="+Constants.APP_Secret+
  4. "&code="+code+"&grant_type=authorization_code";
  5. HttpUtils http = new HttpUtils();
  6. // 设置超时时间
  7. //        http.configCurrentHttpCacheExpiry(1000 * 10);
  8. http.send(HttpRequest.HttpMethod.GET, urlStr, null,
  9. new RequestCallBack<String>() {
  10. // 接口回调
  11. @Override
  12. public void onSuccess(ResponseInfo<String> info) {
  13. System.out.println("返回的json字符串:" + info.result);
  14. Toast.makeText(getApplicationContext(), info.result, Toast.LENGTH_SHORT).show();
  15. JSONObject obj = null;
  16. try {
  17. obj = new JSONObject(info.result);
  18. //toast  OpenID
  19. Toast.makeText(getApplicationContext(), obj.getString("openid"), Toast.LENGTH_LONG).show();
  20. } catch (JSONException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. @Override
  25. public void onFailure(com.lidroid.xutils.exception.HttpException e, String s) {
  26. }
  27. });
  28. }

1.下载的SDK一定要是最新的,旧一点的SDK里面在获取code的时候没有 .code属性,比如官方demo中万年不变的sdk就害的我很惨。

  1. 签名生成工具链接。

[转] Android进阶——安卓接入微信,获取OpenID的更多相关文章

  1. Android 第三方应用接入微信平台(2)

    微信平台开放后倒是挺火的,许多第三方应用都想试下,毕竟可以利用微信 建立起来的关系链来拓展自己的应用还是挺不错的,可以节约很多在社交方 面的开销,我最近由于实习需要也在研究这个东西,不过发现网上的相关 ...

  2. Android 第三方应用接入微信平台(1)

    关键字:微信开放平台   Android第三方应用接入微信 微信平台开放后倒是挺火的,许多第三方应用都想试下接入微信这个平台, 毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的,可 以节约 ...

  3. 简单的实现微信获取openid

    微信公众平台获取openid在公众号的开发中有很多用途,前段时间为实现用户使用公众号在登录一次以后可以免密登陆而使用了openid.开发过程中遇到了一些问题,在这里向需要且还没有获取到openid的米 ...

  4. 微信获取 openid 静默及非静默

    <?php /* 需要的微信公众号配置信息 APPID : 绑定支付的APPID APPSECRET : 公众帐号secert */ class Index { // 配置账号信息 privat ...

  5. Android 第三方应用接入微信平台研究情况分享

    微信平台开放后倒是挺火的,许多第三方应用都想试下接入微信这个平台,毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的 最近由于实习需要也在研究这个东西,这里把我的整个研究情况给出来 微信平台 ...

  6. 微信-获取openid

    第一步 首先把微信的支付流程与相关的文档熟悉一遍,具体的支付逻辑是怎么实现的,心里要有一定的路数,开发的时候一边看文档,一边写,再一边调试这是最好的选择,首先阅读微信开发文档,因为我们这次是做公众号支 ...

  7. 我的Android进阶之旅------>如何获取系统中定义了那些权限

    在Window控制台中输入如下命令可以看到Android系统中列出的所有权限(如果自定义权限注册成功,在这里也会找到这些自定义的权限) adb shell pm list permissions C: ...

  8. 微信获取openId

    router.beforeEach(function(to, from, next){ //中间页等待跳转 if(to.meta.requireCheck=="WaitLogin" ...

  9. 我的Android进阶之旅------>如何获取Android控件的宽和高

    本文转载于:http://blog.csdn.net/johnny901114/article/details/7839512 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我 ...

随机推荐

  1. JavaScript中的自调用函数

    自调用函数 自调用函数(self-invoking funciton)就是函数定义完之后会立即运行的函数. 最常见的写法是: (function() { // function body... }() ...

  2. 校园网之MentoHUST安装与使用

    作用:MentoHUST可以解决校园网锐捷客户端与Windows的兼容性问题,可以解决安装虚拟机之后虚拟机网卡与本地网卡冲突的问题,可以做到愉快的用校园网,并可以愉快的用校园网开Wifi给自己或者小伙 ...

  3. MVC——数据库增删改查(Razor)

    一.显示信息 .Models(模板) private MyDBDataContext _context = new MyDBDataContext(); //定义一个变量取出所有数据 public L ...

  4. HDU4027 Can you answer these queries? 线段树

    思路:http://www.cnblogs.com/gufeiyang/p/4182565.html 写写线段树 #include <stdio.h> #include <strin ...

  5. LightOJ 1356 Prime Independence 二分图最大独立集,HK算法

    这个题唯一需要说的就是普通的匈牙利算法是O(nm)的,过不了 然后HK算法可以O(n^0.5m),这个算法可以每次找很多同样长度的最短增广路 分析见:http://www.hardbird.net/l ...

  6. Linux Kernel Schduler History And Centos7.2's Kernel Resource Analysis

    本文分为概述.历史.el7.2代码架构图解三部分. 解决的问题: a.Kernel调度发展过程: b.以架构图的方式,详解el7.2具体调度实现.内核线程模型.调度时间片计算,以及探究整个Kernel ...

  7. ACM 2015年上海区域赛A题 HDU 5572An Easy Physics Problem

    题意: 光滑平面,一个刚性小球,一个固定的刚性圆柱体 ,给定圆柱体圆心坐标,半径 ,小球起点坐标,起始运动方向(向量) ,终点坐标 ,问能否到达终点,小球运动中如果碰到圆柱体会反射. 学到了向量模板, ...

  8. 不同的jar里边相同的包名类名怎么区别导入

    今天在做项目的时候遇到了一个很有意思的问题,折磨了我很长时间,不过最终还是解决了,特留此文纪念一下. 遇到的问题: 同样一段代码,在同事那就好使,在我这就找不到一个方法.引用的包也都是相同的,这种问题 ...

  9. mac使用初级

    imac使用的是login shell,所有开启一个terminal的时候,不会运行.bashrc文件,而是运行.bash_profile文件,因此只需要中home目录新建一个.bash_profil ...

  10. tomcat运行问题解决方法

    早上过来遇到一个非常奇怪的问题,运行一个新的项目,运行环境都没问题,可是在调试的时候,总是出错. 错误代码: log4j:WARN No appenders could be found for lo ...