第三方登录

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

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

源码效果:

源码片段:

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

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

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

2021-12-06 09:44:30

鸿蒙HarmonyOS应用

2015-01-20 17:01:30

Android源码QQdemo

2019-07-30 11:35:54

AndroidRetrofit

2014-07-23 08:55:42

iOSFMDB

2019-09-03 18:31:19

第三方支付电商支付行业

2025-02-05 10:19:24

2009-12-31 14:38:34

Silverlight

2017-12-11 15:53:56

2016-10-21 14:09:10

2013-08-12 16:04:19

第三方移动应用

2021-09-26 10:43:08

注册Istio集成

2009-01-14 12:45:05

MSNIM苹果

2017-05-16 13:24:02

LinuxCentOS第三方仓库

2014-07-22 10:56:45

Android Stu第三方类库

2010-05-25 11:09:31

SVN工具

2024-04-03 12:57:29

2024-03-04 10:36:39

2017-11-01 06:40:33

2022-01-14 09:57:14

鸿蒙HarmonyOS应用

2014-07-25 09:33:22

点赞
收藏

51CTO技术栈公众号