第三方登录

移动开发
因为涉及到客户的个人信息安全,所以需要大家根据这篇博客(http://blog.csdn.net/csdnfml/article/details/49446479)进行简单修改

源码简介:因为涉及到客户的个人信息安全,所以需要大家根据这篇博客(http://blog.csdn.net/csdnfml/article/details/49446479)进行简单修改

源码效果:

源码片段:

  1. /** ------------------------QQ第三方登录-------------------- */ 
  2.    public void loginQQ(){ 
  3.        /** 判断是否登陆过 */ 
  4.        if (!mTencent.isSessionValid()){ 
  5.            mTencent.login(this"all",loginListener); 
  6.        }/** 登陆过注销之后在登录 */ 
  7.        else { 
  8.            mTencent.logout(this); 
  9.            mTencent.login(this"all",loginListener); 
  10.        } 
  11.    } 
  12.    IUiListener loginListener = new BaseUiListener() { 
  13.        @Override 
  14.        protected void doComplete(JSONObject values) { 
  15.            initOpenidAndToken(values); 
  16.            updateUserInfo(); 
  17.        } 
  18.    }; 
  19.    /** QQ登录第二步:存储token和openid */ 
  20.    public static void initOpenidAndToken(JSONObject jsonObject) { 
  21.        try { 
  22.            String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN); 
  23.            String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN); 
  24.            String openId = jsonObject.getString(Constants.PARAM_OPEN_ID); 
  25.            if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires) && !TextUtils.isEmpty(openId)) { 
  26.                mTencent.setAccessToken(token, expires); 
  27.                mTencent.setOpenId(openId); 
  28.            } 
  29.        } catch(Exception e) { 
  30.        } 
  31.    } 
  32.    /** QQ登录第三步:获取用户信息 */ 
  33.    private void updateUserInfo() { 
  34.        if (mTencent != null && mTencent.isSessionValid()) { 
  35.            IUiListener listener = new IUiListener() { 
  36.                @Override 
  37.                public void onError(UiError e) { 
  38.                    Message msg = new Message(); 
  39.                    msg.obj = "把手机时间改成获取网络时间"
  40.                    msg.what = 1
  41.                    mHandler.sendMessage(msg); 
  42.                } 
  43.   
  44.                @Override 
  45.                public void onComplete(final Object response) { 
  46.                    Message msg = new Message(); 
  47.                    msg.obj = response; 
  48.                    msg.what = 0
  49.                    mHandler.sendMessage(msg); 
  50.                } 
  51.                @Override 
  52.                public void onCancel() { 
  53.                    Message msg = new Message(); 
  54.                    msg.obj = "获取用户信息失败"
  55.                    msg.what = 2
  56.                    mHandler.sendMessage(msg); 
  57.                } 
  58.            }; 
  59.            mInfo = new UserInfo(this, mTencent.getQQToken()); 
  60.            mInfo.getUserInfo(listener); 
  61.        } else { 
  62.   
  63.        } 
  64.    } 
  65.    Handler mHandler = new Handler() { 
  66.        @Override 
  67.        public void handleMessage(Message msg) { 
  68.            if (msg.what == 0) { 
  69.                JSONObject response = (JSONObject) msg.obj; 
  70.                if (response.has("nickname")) { 
  71.                    try { 
  72.                        log("获取用户信息成功,返回结果:"+response.toString()); 
  73.                        mThirdLoginResult.setText("登录成功\n"+"昵称:"+response.getString("nickname")+"\n头像地址:"+response.get("figureurl_qq_1")); 
  74.                    } catch (JSONException e) { 
  75.                        e.printStackTrace(); 
  76.                    } 
  77.                } 
  78.            }else if(msg.what == 1){ 
  79.                mThirdLoginResult.setText(msg+""); 
  80.            }else if(msg.what == 2){ 
  81.                mThirdLoginResult.setText(msg+""); 
  82.            } 
  83.        } 
  84.   
  85.    }; 
  86.    /** QQ登录***步:获取token和openid */ 
  87.    private class BaseUiListener implements IUiListener { 
  88.        @Override 
  89.        public void onComplete(Object response) { 
  90.            if (null == response) { 
  91.                mToast("登录失败"); 
  92.                return
  93.            } 
  94.            JSONObject jsonResponse = (JSONObject) response; 
  95.            if (null != jsonResponse && jsonResponse.length() == 0) { 
  96.                mToast("登录失败"); 
  97.                return
  98.            } 
  99.            log("QQ登录成功返回结果-" + response.toString()); 
  100.            doComplete((JSONObject)response); 
  101.        } 
  102.        protected void doComplete(JSONObject response) {} 
  103.        @Override 
  104.        public void onError(UiError e) { 
  105.            Util.toastMessage(MainActivity.this"onError: " + e.errorDetail); 
  106.            Util.dismissDialog(); 
  107.        } 
  108.        @Override 
  109.        public void onCancel() { 
  110.            Util.toastMessage(MainActivity.this"onCancel: "); 
  111.            Util.dismissDialog(); 
  112.            if (isServerSideLogin) { 
  113.                isServerSideLogin = false
  114.            } 
  115.        } 
  116.    } 
  117.    /** -------------------------QQ第三方登录结束-------------------- */ 

下载地址:http://down.51cto.com/data/2115240

责任编辑:倪明 来源: devstore
相关推荐

2021-12-06 09:44:30

鸿蒙HarmonyOS应用

2015-01-20 17:01:30

Android源码QQdemo

2014-07-23 08:55:42

iOSFMDB

2019-07-30 11:35:54

AndroidRetrofit

2019-09-03 18:31:19

第三方支付电商支付行业

2009-12-31 14:38:34

Silverlight

2016-10-21 14:09:10

2017-12-11 15:53:56

2024-03-04 10:36:39

2013-08-12 16:04:19

第三方移动应用

2014-07-22 10:56:45

Android Stu第三方类库

2009-01-14 12:45:05

MSNIM苹果

2017-05-16 13:24:02

LinuxCentOS第三方仓库

2010-05-25 11:09:31

SVN工具

2021-09-26 10:43:08

注册Istio集成

2024-04-03 12:57:29

2022-01-14 09:57:14

鸿蒙HarmonyOS应用

2014-07-25 09:33:22

2021-03-03 09:42:26

鸿蒙HarmonyOS图片裁剪

2017-11-01 06:40:33

点赞
收藏

51CTO技术栈公众号