Android ShareSDKQQ 第三方登录so easy?
来源:互联网 发布:云上贵州大数据 编辑:程序博客网 时间:2024/06/05 10:34
昨天群里有个群友看到我之前做的那个qq第三方登录怎么做的,于是乎思考了一下,还是决定写一篇博客记录下,其实都不难的,其实之前我又写到FaceBook的第三方登录不知道看下这Android集成FaceBook登入《-》 今天只举例QQ登录其他像微信大同小异需要微信工具签名然后md5+包名等。
开车啦
准备工作需要下载ShareSDK这里我不再赘述不知道的看我的这篇文章ShareSDK社会化分享之那些年我们踩过的坑我这里不再赘述因为很多步骤是重复的。
然后在项目工程中assets文件下修改ShareSDK.xml文件更改您的Appkey
然后QQ第三方登录准备的Jar点击直接下载opensdk
然后解压将jar放到工程中的libs中如下图所示
1、申请appid和appkey的用途
appid :应用的唯一标识。在OAuth2.0认证过程中,appid的值即为oauth_consumer_key的值。
appkey:appid对应的密钥,访问用户资源时用来验证应用的合法性。在OAuth2.0认证过程中,appkey的值即为oauth_consumer_secret的值。
2、配置清单文件AndroidMainfest.xml
2.1添加相关权限
<!-- 添加权限 --> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/> <!-- 蓝牙分享所需的权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<activity android:name="com.mob.tools.MobUIShell" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:windowSoftInputMode="stateHidden|adjustResize">
2.2微信授权回调
<!--微信分享回调 --> <activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
2.3注册Activity
<!-- 注册SDKActivity --> <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" /> <data android:scheme="tencent1105658914" /> <!-- 开放平台获取的APPID --> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name=".bdmap.BMapActivity" />
3、代码简单实现
声明变量
private Tencent mTencent; private BaseUiListener mIUiListener; private UserInfo mUserInfo; private CallbackManager mCallBackManager;
SDK初始化这个大多数都会有需要注意的这里是传入getApplicationContext
mTencent=Tencent.createInstance(AppConstant.APP_ID,LoginActivity.this.getApplicationContext());
3.1 QQ登录授权接口回调
public void QQLogin(View v) { mIUiListener = new BaseUiListener(); //all表示获取所有权限 mTencent.login(LoginActivity.this,"all", mIUiListener); //授权成功后跳转到引导页面 startActivity(new Intent(LoginActivity.this,WelcomeGuideActivity.class)); }
3.2自定义监听器实现IUiListener接口后,需要实现的3个方法 onComplete完成 onError错误 onCancel取消
/** * 自定义监听器实现IUiListener接口后,需要实现的3个方法 * onComplete完成 onError错误 onCancel取消 */ private class BaseUiListener implements IUiListener{ @Override public void onComplete(Object response) { Toast.makeText(LoginActivity.this, "授权成功", Toast.LENGTH_SHORT).show(); Log.e(TAG, "response:" + response); JSONObject obj = (JSONObject) response; try { String openID = obj.getString("openid"); String accessToken = obj.getString("access_token"); String expires = obj.getString("expires_in"); mTencent.setOpenId(openID); mTencent.setAccessToken(accessToken,expires); QQToken qqToken = mTencent.getQQToken(); mUserInfo = new UserInfo(getApplicationContext(),qqToken); mUserInfo.getUserInfo(new IUiListener() { @Override public void onComplete(Object response) { Log.e(TAG,"登录成功"+response.toString()); } @Override public void onError(UiError uiError) { Log.e(TAG,"登录失败"+uiError.toString()); } @Override public void onCancel() { Log.e(TAG,"登录取消"); } }); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(UiError uiError) { Toast.makeText(LoginActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { Toast.makeText(LoginActivity.this, "授权取消", Toast.LENGTH_SHORT).show(); } }
3.3在调用Login的Activity或者Fragment中重写onActivityResult方法
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == Constants.REQUEST_LOGIN){ Tencent.onActivityResultData(requestCode,resultCode,data,mIUiListener); } super.onActivityResult(requestCode, resultCode, data); }
总结:
整个流程如下图所示
效果如下图所示360高清无码正在加载中别眨眼!为了做个这东西把自己QQ都卖了我容易吗?我没办法老司机!
转载请注明出处同时欢迎大家加我的群号,欢迎开车,自己可以去尝试做一下我这里可能也不是很完整,最好建议大家去管网看文档!应该是没问题的!我这人有一点不好不喜欢拖拉!喜欢的事情就去做!因为年轻!因为任性!因为代码是敲出来的!还记得我有个群友代码9.99评分豆瓣棒棒哒!来个合照
- Android ShareSDKQQ 第三方登录so easy?
- Android 第三方登录
- Android 第三方登录
- Android第三方登录
- android 第三方登录
- Android 第三方登录
- Android QQ第三方登录
- android,QQ第三方登录
- Android第三方账号登录
- Android QQ第三方登录
- Android实现第三方登录
- Android QQ第三方登录
- Facebook android 第三方登录
- Android 原生第三方登录
- android实现第三方登录
- android sharesdk 第三方登录
- Android实现第三方登录
- ShareSDK 第三方登录 Android
- spring-aop详细用法
- 支持UEFI的主板在win10下安装ubuntu双系统
- Python入门练习0009:人民币金额打印
- 什么是serialVersionUID,serialVersionUID的作用
- 13. Roman to Integer
- Android ShareSDKQQ 第三方登录so easy?
- html表单的几种提交方式总结
- 2017-4-8practice
- 2017年网易游戏数据挖掘/机器学习实习生笔试回忆
- 安卓adb调用模拟屏幕点击
- matlab学习笔记(基础)
- 结对编程
- 写博客的意义
- 服务和负载均衡的实现(zookeeper)