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

 再生Solo_868 发布于 2022-11-04 15:28

我已经获取到微信客户端返回的code,但是通过https://api.weixin.qq.com/sns/oauth2/access_toke网址没有获取到openid,网址无效果

4 个回答
  • //重写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);
            }
        });
    }
    
    2022-11-08 05:29 回答
  • https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&verify=1&lang=zh_CN&token=e86321da7b63085479a8db8e4552b98efcb599be

    注意“[3] 接收微信的请求及返回值” 这部分内容,包名和类名要跟文档里的命名的一样才可以

    2022-11-08 05:37 回答
  • 楼主,跪求你是怎么获取code的?求具体的代码啊。我这个根本无法获取code,反编译之后代码里也没有code这个属性

    2022-11-08 05:45 回答
  • 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;
    }
    
    2022-11-08 05:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有