zoukankan      html  css  js  c++  java
  • 团队冲刺第八天--校园百晓生(STDeverything)

    摘要:今天终于完成了qq登陆的相关内容,主要将数据以json形式回调,取出其中openid、昵称、40*40像素头像链接地址进入数据库。

    遇到问题:openid怎么也存不进去,但是去掉openid其他数据可以存进去。(一脸懵逼)

    解决方法:重写servlet和util。

    private void checkLoginQQ(HttpServletRequest request, HttpServletResponse response) throws IOException {
            String openid=request.getParameter("openid");
            String imguser=request.getParameter("imguser");
            String name=request.getParameter("nickname");
            Boolean flag=Boolean.parseBoolean(request.getParameter("flag"));
            System.out.println("checkloginqq");
            response.getWriter().write(DBUtil.checkLoginQQ(openid, imguser, name, flag));
        }
    Login
    public static String checkLoginQQ(String openid,String imguser,String name,boolean flag) {       //检查qq登陆
            JSONObject jsonObject=new JSONObject();
            jsonObject.put("status", false);    //是否成功标志
            Connection connection=getConnection();
            String sql="select * from user where id='"+openid+"'";
            ResultSet rs=null;
            if(flag) {
                try {
                    Statement statement=connection.createStatement();
                    rs=statement.executeQuery(sql);
                    if(!rs.next()) {
                        sql="insert into user values('"+openid+"','"+name+"',"
                                + "'123','"+getDateString(true)+"','"+imguser.replace("\", "")+"')";
                        statement.executeUpdate(sql);
                    }
                    jsonObject.put("status", true);
                    jsonObject.put("id", openid);
                    jsonObject.put("msg", "登陆成功");
                    closeDB(connection, statement, rs);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }else {
                jsonObject.put("msg", "登陆失败,授权未成功");
            }
            System.out.println(jsonObject.toString());
            return jsonObject.toString();
        }
    util
    private class BaseUiListener implements IUiListener {
    
            @Override
            public void onComplete(Object o) {
                Log.d("qq", o.toString());
                try {
                    JSONObject obj = (JSONObject) o;
                    openID = obj.getString("openid");
                    String accessToken = obj.getString("access_token");
                    String expires = obj.getString("expires_in");
                    mTencent.setOpenId(openID);
                    mTencent.setAccessToken(accessToken, expires);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                final QQToken qqToken = mTencent.getQQToken();
                UserInfo info = new UserInfo(getApplicationContext(), qqToken);
                info.getUserInfo(new IUiListener() {         //获取基本信息
                    @Override
                    public void onComplete(Object o) {
                        final JSONObject obj = (JSONObject) o;
                        Log.d("jsonobj",((JSONObject) o).toString().replace("\",""));
                        new Thread(new Runnable() {           //开启线程验证登陆
                            @Override
                            public void run() {
                                try {
                                    String reqdata = "method=checkloginqq&openid=" + openID + "&nickname=" + obj.getString("nickname") + "" +
                                            "&flag=" + (obj.getInt("ret") == 0) + "&imguser=" + obj.getString("figureurl_2") + "";
                                    String json=String.valueOf(HttpUtil.sendPost(requrl, reqdata));
                                    Log.d("resjson",json);
                                    final JSONObject jsonObject = new JSONObject(json);
                                    runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {
                                            try {
                                                Toast.makeText(Login.this, jsonObject.getString("msg"), Toast.LENGTH_SHORT).show();
                                                if (jsonObject.getBoolean("status")) {      //true代表成功
                                                    startActivity(new Intent(Login.this, MainActivity.class)
                                                            .putExtra("id", jsonObject.getString("id")));
                                                }
                                            } catch (JSONException e) {
                                                e.printStackTrace();
                                            }
                                        }
                                    });
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                            }
                        }).start();
                    }
    
                    @Override
                    public void onError(UiError uiError) {
                        Toast.makeText(Login.this, "获取信息失败,请重试", Toast.LENGTH_SHORT).show();
                    }
    
                    @Override
                    public void onCancel() {
    
                    }
                });
            }
    
            @Override
            public void onError(UiError e) {
                Toast.makeText(Login.this, "获取授权失败,请重试", Toast.LENGTH_SHORT).show();
            }
    
            @Override
            public void onCancel() {
    
            }
        }
    android
  • 相关阅读:
    set-rebgin
    HTML5开发学习:本地存储Web Sql Database
    Sublime text 入门学习资源篇及其基本使用方法
    web前端不可错过的开发工具–Adobe Brackets
    关于WEB前端开发的工具
    WebStorm使用技巧
    五大浏览器兼容性
    IT解惑真经
    win7下一劳永逸地解决触控板禁用的问题
    PHP+Mysql学习笔记
  • 原文地址:https://www.cnblogs.com/dd110343/p/12767973.html
Copyright © 2011-2022 走看看