使用 UMeng 实现第三方QQ登录

操作流程见下网址:

 http://dev.umeng.com/social/android/detail-share/login-page#oauth_2_4

 

附代码:

  1 package com.don.umeng_sina;
  2 
  3 import java.util.Map;
  4 import java.util.Set;
  5 
  6 import android.app.Activity;
  7 import android.content.Intent;
  8 import android.os.Bundle;
  9 import android.text.TextUtils;
 10 import android.view.View;
 11 import android.widget.Toast;
 12 
 13 import com.umeng.socialize.bean.SHARE_MEDIA;
 14 import com.umeng.socialize.controller.UMServiceFactory;
 15 import com.umeng.socialize.controller.UMSocialService;
 16 import com.umeng.socialize.controller.listener.SocializeListeners.UMAuthListener;
 17 import com.umeng.socialize.controller.listener.SocializeListeners.UMDataListener;
 18 import com.umeng.socialize.exception.SocializeException;
 19 import com.umeng.socialize.sso.SinaSsoHandler;
 20 import com.umeng.socialize.sso.UMQQSsoHandler;
 21 import com.umeng.socialize.sso.UMSsoHandler;
 22 import com.umeng.socialize.utils.Log;
 23 import com.umeng.soexample.commons.Constants;
 24 
 25 public class MainActivity extends Activity {
 26 
 27     // 整个平台的Controller, 负责管理整个SDK的配置、操作等处理
 28     private UMSocialService mController = UMServiceFactory
 29             .getUMSocialService(Constants.DESCRIPTOR);
 30 
 31     @Override
 32     protected void onCreate(Bundle savedInstanceState) {
 33         super.onCreate(savedInstanceState);
 34         setContentView(R.layout.activity_main);
 35         // 设置新浪SSO handler
 36         // mController.getConfig().setSsoHandler(new SinaSsoHandler());
 37         SinaSsoHandler sinaHandler = new SinaSsoHandler();
 38         sinaHandler.addToSocialSDK();
 39 
 40         // App Key:2442672255
 41         // App Secret:b991048880d4645eea758ea1b4c78fde
 42 
 43         // 参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.
 44         UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(MainActivity.this,
 45                 "1103529992", "xIZ38jTDIv1IzB05");
 46         qqSsoHandler.addToSocialSDK();
 47     }
 48 
 49     public void SinaLogin(View v) {
 50         // login(SHARE_MEDIA.SINA);
 51 
 52         mController.doOauthVerify(MainActivity.this, SHARE_MEDIA.SINA,
 53                 new UMAuthListener() {
 54                     @Override
 55                     public void onError(SocializeException e,
 56                             SHARE_MEDIA platform) {
 57                     }
 58 
 59                     @Override
 60                     public void onComplete(Bundle value, SHARE_MEDIA platform) {
 61                         if (value != null
 62                                 && !TextUtils.isEmpty(value.getString("uid"))) {
 63                             Toast.makeText(MainActivity.this, "授权成功.",
 64                                     Toast.LENGTH_SHORT).show();
 65                         } else {
 66                             Toast.makeText(MainActivity.this, "授权失败",
 67                                     Toast.LENGTH_SHORT).show();
 68                         }
 69                     }
 70 
 71                     @Override
 72                     public void onCancel(SHARE_MEDIA platform) {
 73                     }
 74 
 75                     @Override
 76                     public void onStart(SHARE_MEDIA platform) {
 77                     }
 78                 });
 79     }
 80      
 81     /**
 82      * 添加QQ登录按钮的监听事件
 83      * @param v
 84      */
 85     public void QQLogin(View v) {
 86         mController.doOauthVerify(MainActivity.this, SHARE_MEDIA.QQ,
 87                 new UMAuthListener() {
 88                     @Override
 89                     public void onStart(SHARE_MEDIA platform) {
 90                         Toast.makeText(MainActivity.this, "授权开始",
 91                                 Toast.LENGTH_SHORT).show();
 92                     }
 93 
 94                     @Override
 95                     public void onError(SocializeException e,
 96                             SHARE_MEDIA platform) {
 97                         Toast.makeText(MainActivity.this, "授权错误",
 98                                 Toast.LENGTH_SHORT).show();
 99                     }
100 
101                     @Override
102                     public void onComplete(Bundle value, SHARE_MEDIA platform) {
103                         Toast.makeText(MainActivity.this, "授权完成",
104                                 Toast.LENGTH_SHORT).show();
105                         String uid = value.getString("uid");
106                         //如果授权完成,则获取授权平台的用户信息
107                         if(!TextUtils.isEmpty(uid)){
108                             getUserInfo(SHARE_MEDIA.QQ);
109                         }else{
110                             Toast.makeText(MainActivity.this,"授权失败", 0).show();
111                         }
112                     }
113 
114                     @Override
115                     public void onCancel(SHARE_MEDIA platform) {
116                         Toast.makeText(MainActivity.this, "授权取消",
117                                 Toast.LENGTH_SHORT).show();
118                     }
119                 });
120     }
121 
122 
123     /**
124      * 获取授权平台的用户信息
125      */
126     private void getUserInfo(SHARE_MEDIA platform) {
127         mController.getPlatformInfo(MainActivity.this, SHARE_MEDIA.SINA,
128                 new UMDataListener() {
129                     @Override
130                     public void onStart() {
131                         Toast.makeText(MainActivity.this, "获取平台数据开始...",
132                                 Toast.LENGTH_SHORT).show();
133                     }
134 
135                     @Override
136                     public void onComplete(int status, Map<String, Object> info) {
137                         if (status == 200 && info != null) {
138                             StringBuilder sb = new StringBuilder();
139                             Set<String> keys = info.keySet();
140                             for (String key : keys) {
141                                 sb.append(key + "=" + info.get(key).toString()
142                                         + "\r\n");
143                             }
144                             Log.v("TAG", sb.toString());
145                         } else {
146                             Log.v("TAG", "发生错误:" + status);
147                         }
148                     }
149                 });
150         
151     }
152 
153 }
View Code

 

posted on 2014-11-24 21:00  畅遨  阅读(5898)  评论(0编辑  收藏  举报

导航