android腾讯开放平台登陆授权,获取用户信息
2014-05-22 20:53
831 查看
今天研究了一下腾讯的开放平台,要实现授权登录,事先要把mta-sdk-1.6.2.jar和svn2924_open_sdk.jar复制粘贴到项目的libs目录下,并把svn2924_open_sdk.jar这个文件 add to builder path。然后设置一下manifest.xml,在application节点下,加入com.tencent.tauth.AuthActivity和com.tencent.connect.common.AssistActivity,配置如下:
还有两个权限也必须加上,
下面是一个封装好的类QQLogin。
在一个MainActivity中调用它,如下:
Logcat中输出:
05-23 08:34:03 System.out --->男
05-23 08:34:03 System.out --->皈依自然
05-23 08:34:03 System.out --->39532B1ECCD269585622CDA611781D3C
成功得到授权qq的openId,昵称,和性别,当然你也可以根据自己的需要获取相关信息!
<activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- APPID,设置为tencent加你的appId,假如我的appId是123456789,就写成下面那样 --> <data android:scheme="tencent123456789" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" > </activity>
还有两个权限也必须加上,
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
下面是一个封装好的类QQLogin。
public class QQLogin { private final String TAG = QQLogin.class.getName() + "--->"; private Activity mActivity; private Tencent mTencent; public static QQAuth mQQAuth; private Map<String, Object> paramsMap = new HashMap<String, Object>(); public QQLogin(Activity activity) { this.mActivity = activity; Log.d(TAG , "start QQ Login..."); /** QQAuth要用全局性的Context来创建 */ mQQAuth = QQAuth.createInstance(getString(R.string.qq_appid), mActivity.getApplicationContext()); /** Tencent要用当前Context来创建 */ mTencent = Tencent.createInstance(getString(R.string.qq_appid), mActivity); } private String getString(int resId) { return mActivity.getString(resId); } /** * 进入QQ登录授权界面 */ public int login() { return mTencent.login(mActivity, getString(R.string.SCOPE), qqLoginListener); } /** * 授权登录回调 */ private QQListener qqLoginListener = new QQListener() { @Override public void onComplete(JSONObject jsonObject) { try { /** 根据用户qq号生成的openId */ paramsMap.put("openId", jsonObject.getString("openid")); } catch (JSONException e) { e.printStackTrace(); } if (userInfoListener != null && mQQAuth != null && mQQAuth.isSessionValid()) { new UserInfo(mActivity, mQQAuth.getQQToken()).getUserInfo(userInfoListener); } } }; /** * 获取用户信息回调 */ private QQListener userInfoListener = new QQListener() { public void onComplete(JSONObject jsonObject) { Logger.d("UserInfo=" + jsonObject); try { /** 用户的昵称 */ paramsMap.put("nickname", jsonObject.getString("nickname")); /** 用户的性别 */ paramsMap.put("gender", jsonObject.getString("gender")); /** 用户的头像url */ paramsMap.put("figureurl", jsonObject.getString("figureurl")); /**回调*/ if (finishListener!=null) { finishListener.onfinish(paramsMap); } } catch (JSONException e) { e.printStackTrace(); } } }; /** * 封装了qq回调接口的类 * * @author Bruce * */ public static abstract class QQListener implements IUiListener { private String TAG = QQListener.class.getName() + "--->"; @Override public void onCancel() { Logger.d(TAG + "onCancel"); } @Override @Deprecated public void onComplete(Object object) { onComplete((JSONObject) object); } public abstract void onComplete(JSONObject jsonObject); @Override public void onError(UiError arg0) { Logger.d(TAG + "onError"); } } private onFinishListener finishListener; public void setFinishListener(onFinishListener finishListener) { this.finishListener = finishListener; } /**自定义qq授权结束时的回调接口*/ public interface onFinishListener { public void onfinish(Map<String, Object> map); } }
在一个MainActivity中调用它,如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); QQLogin qqLogin = new QQLogin(this); qqLogin.setFinishListener(qqLoginFinish); qqLogin.login(); } /**qq授权结束后的回调*/ private onFinishListener qqLoginFinish=new onFinishListener() { @Override public void onfinish(Map<String, Object> map) { System.out.println("--->"+map.get("gender")); System.out.println("--->"+map.get("nickname")); System.out.println("--->"+map.get("openId")); } };
Logcat中输出:
05-23 08:34:03 System.out --->男
05-23 08:34:03 System.out --->皈依自然
05-23 08:34:03 System.out --->39532B1ECCD269585622CDA611781D3C
成功得到授权qq的openId,昵称,和性别,当然你也可以根据自己的需要获取相关信息!
相关文章推荐
- android Facebook登陆获取用户信息
- Android中集成google play 登陆来获取用户名、邮件地址、token等用户信息
- Android集成原生微信授权获取用户信息登录
- android Line登陆获取用户信息
- Android实现新浪微博和QQ登陆并获取用户的信息
- Android之QQ授权登录获取用户信息
- android中使用Twitter登陆获取用户信息
- Android之QQ授权登录获取用户信息
- Android之QQ授权登录获取用户信息
- Android之QQ授权登录获取用户信息
- 微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆
- 微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆
- (微信公众号开发《一》OAuth2.0网页授权认证获取用户的详细信息,实现自动登陆)http://blog.csdn.net/liaohaojian/article/details/70175835
- 微信企业号获取用户授权登陆信息
- Android授权登录新浪微博获取用户个人信息
- Android之QQ授权登录获取用户信息
- Android 微信授权登录、获取Wx用户信息,解决无法回调问题
- 微信公众平台开发-网页授权获取用户基本信息
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 微信网页授权获取用户基本信息