文档章节

android微信第三方登录怎么通过code获取openid?

今日竹石
 今日竹石
发布于 2015/02/12 09:29
字数 234
阅读 453
收藏 0

     方法1:

1.登录公众账号设置OAuth2.0
2.设置菜单按钮URL为OAuth链接
3.页面后台获取:

public String getopenId() {
    HttpServletRequest request = ServletActionContext.getRequest();
    HttpServletResponse response = ServletActionContext.getResponse();
    response.setContentType("text/html");
    String code = request.getParameter("code");
    String urlstr = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=<appId>&secret=<secret>&code=" + code + "&grant_type=authorization_code";
    JSONObject json;    try {
        json = JSONObject.fromObject(HTTPTools.postToGetJson(urlstr));
        openId = json.getString("openid");
    } catch (Exception e) {        // e.printStackTrace();
        return "";
    }    return openId;
}


     方法2:

//重写onresume()方法

@Override
protected void onResume() {
if (type != null && type.equals("mwx")) {
SharedPreferences settings = getSharedPreferences("setting", 0);
String code = settings.getString("code", null);
if (code != null && !code.equals("")) {
showProgress(true);
getOpenid(code);
}
settings.edit().clear();
settings.edit().commit();
}
super.onResume();
}

// 获取微信用户的openid和access token
public void getOpenid(String code) {
final AsyncHttpClient httpClient = Gl.sharedAsyncClient();
RequestParams params = new RequestParams();
params.put("appid", Constants.wxAPP_ID);
params.put("secret", Constants.wxAppSecret);
params.put("code", code);
params.put("grant_type", "authorization_code");
String httpurl = "https://api.weixin.qq.com/sns/oauth2/access_token";
httpClient.get(httpurl, params, new JsonHttpResponseHandler() {

        @Override
        public void onSuccess(int statusCode, Header[] headers,
                JSONObject response) {            try {
                String opendid = response.getString("openid");                
                if (opendid != null && !opendid.equals("")) {
                    openid = response.getString("openid");
                    otherLogin("mwx", opendid);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }            super.onSuccess(statusCode, headers, response);
        }        @Override
        public void onFailure(int statusCode, Header[] headers,
                String responseString, Throwable throwable) {            
                super.onFailure(statusCode, headers, responseString, throwable);
        }
    });
}



© 著作权归作者所有

今日竹石
粉丝 41
博文 227
码字总数 181312
作品 0
朝阳
程序员
私信 提问
加载中

评论(1)

jdhdeveloper
jdhdeveloper
这写在onResume()方法里,当这个页面第一次打开不是也会调用吗?这个时候还没有进行登录请求呢,会报错啊。
android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)

第一步:去对应的平台上注册app的相关信息,这一步,可参考我的另外一个篇,关于接入亲加通信云的文章 各个平台注册应用信息的地址如下: 新浪微博 http://open.weibo.com 腾讯微博 http://d...

鹭明
2018/06/26
0
0
Android实现QQ第三方登录

先看下效果图吧 原理:我们要使用QQ登录我们的应用,不是不用注册,是我们在后台为用户注册了,但是用户不知道,注册需要唯一标识,上图的那串字母与数字的组合就是我们要获得的唯一标识:O...

____追梦人
2015/06/06
1K
0
第三方微信登录 | 静默授权与网页授权的实现

一:介绍 第三方登录有QQ、微信、微博、支付宝等等,如果现在自己的项目中实现这些登录,即可以使用友盟的sdk,也可以一个一个接入,各有各的有点,这里不做赘述。 今天和大家分享的是,在项...

展菲
2018/12/13
0
0
微信公众号开发中,获取用户资料的两种方式

微信公众号的开发主要是在服务号环境下进行,订阅号是拿不到用户的资料的,因此,下文的讨论都基于微信服务号。 微信公众号的两个access_token 在微信的开发文档中,存在两个accesstoken,需...

Jack088
05/16
42
0
微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:,获取优质学习资源。 一、登录流程图 二、小程序客户端 微信小程序端发起登录请求,携带的参数主要有: 参数解释...

公众号_好好学java
2018/07/17
80
1

没有更多内容

加载失败,请刷新页面

加载更多

Android面试常客之Handler全解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/fnhfire_7030/article/details/79518819 前言:又到了一年...

shzwork
19分钟前
4
0
position sticky 定位

本文转载于:专业的前端网站➫position sticky 定位 1、兼容性 https://caniuse.com/#search=sticky chrome、ios和firefox兼容性良好。 2、使用场景 sticky:粘性。粘性布局。 在屏幕范围内时...

前端老手
26分钟前
4
0
CentOS 7 yum 安装 PHP7.3 教程

参考:https://www.mf8.biz/centos-rhel-install-php7-3/ 1、首先安装 EPEL 源: yum install epel-release 安装 REMI 源: yum install http://rpms.remirepo.net/enterprise/remi-release......

dragon_tech
40分钟前
4
0
Linux物理网卡聚合及桥接

Linux内部实现的bridge可以把一台机器上的多张网卡桥接起来,从而把自己作为一台交换机。同时,LInux bridge还支持虚拟端口,即桥接的不一定都是物理网卡接口,还可以是虚拟接口。目前主要表...

xiangyunyan
41分钟前
4
0
一起来学Java8(一)——函数式编程

在这篇文章中,我们将了解到在Java8下如何进行函数式编程。 函数式编程 所谓的函数式编程就是把函数名字当做值进行传递,然后接收方拿到这个函数名进行调用。 首先来看下JavaScript如何进行函...

猿敲月下码
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部