android 第三方登录 --- QQ
1,jar包
2,配置AndroidManifest.xml
1 <activity android:name=".login.LoginActivity" 2 android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"> 3 <intent-filter> 4 <action android:name="android.intent.action.MAIN"/> 5 <category android:name="android.intent.category.LAUNCHER"/> 6 </intent-filter> 7 </activity> 8 <activity 9 android:name="com.tencent.tauth.AuthActivity" 10 android:launchMode="singleTask" 11 android:noHistory="true" > 12 <intent-filter> 13 <action android:name="android.intent.action.VIEW" /> 14 <category android:name="android.intent.category.DEFAULT" /> 15 <category android:name="android.intent.category.BROWSABLE" /> 16 <data android:scheme="tencent222222" /> 17 <!-- 将222222换成自己的appid --> 18 </intent-filter> 19 </activity> 20 21 <activity 22 android:name="com.tencent.connect.common.AssistActivity" 23 android:configChanges="orientation|keyboardHidden" 24 android:screenOrientation="behind" 25 android:theme="@android:style/Theme.Translucent.NoTitleBar" />
3,LoginActivity调用
1 //222222换成自己的appid 2 Tencent mTencent = Tencent.createInstance("222222", this.getApplicationContext()); 3 //all获取全部 4 mTencent.login(this, "all", new IUiListener() { 5 @Override 6 public void onComplete(Object o) { 7 Log.i("返回",o.toString()); 8 } 9 @Override 10 public void onError(UiError uiError) { 11 } 12 @Override 13 public void onCancel() { 14 } 15 }); 16 //注销 17 //mTencent.logout(this);
4,回调
1 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 2 if (requestCode == Constants.REQUEST_LOGIN){ 3 if(resultCode == Constants.ACTIVITY_OK){ 4 Log.i("onActivityResult",data.getStringExtra("key_action")); 5 //如果少了这句,监听器的没效果。onComplete不会执行 6 Tencent.handleResultData(data,loginListener); 7 } 8 } 9 super.onActivityResult(requestCode, resultCode, data); 10 }
5,以上是授权获取openid。下边就是获取授权用户的基本信息了。授权成功后将onComplete(Object o)返回的数据设置到mTencent里
1 try { 2 String token = object.getString(Constants.PARAM_ACCESS_TOKEN); 3 String expires = object.getString(Constants.PARAM_EXPIRES_IN); 4 String openId = object.getString(Constants.PARAM_OPEN_ID); 5 //设置token 6 mTencent.setAccessToken(token, expires); 7 //设置openid 8 mTencent.setOpenId(openId); 9 } catch (JSONException e) { 10 e.printStackTrace(); 11 }
6,拿到当前授权QQ号的昵称,头像之类的基本信息
1 UserInfo userInfo = new UserInfo(this,mTencent.getQQToken()); 2 //和上边授权的一样 3 userInfo.getUserInfo(new IUiListener(){...});
本文来自博客园,作者:西瓜皮不甜,转载请注明原文链接:https://www.cnblogs.com/Jieth/p/5160373.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!