临文乍了了,彻卷兀若无。这篇文章主要讲述Android ShareSDKQQ 第三方登录so easy?相关的知识,希望能为你提供帮助。
昨天群里有个群友看到我之前做的那个qq第三方登录怎么做的,于是乎思考了一下,还是决定写一篇博客记录下。事实上都不难的,事实上之前我又写到FaceBook的第三方登录不知道看下这Android集成FaceBook登入《-》 今天仅仅举例QQ登录其它像微信大同小异须要微信工具签名然后md5+包名等。
开车啦
文章图片
准备工作须要下载ShareSDK这里我不再赘述不知道的看我的这篇文章ShareSDK社会化分享之那些年我们踩过的坑我这里不再赘述由于非常多步骤是反复的。
然后在项目project中assets文件下改动ShareSDK.xml文件更改您的Appkey
文章图片
然后QQ第三方登录准备的Jar点击直接下载opensdk
然后解压将jar放到project中的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 CallbackManagermCallBackManager;
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都卖了我easy吗?我没办法老司机!
文章图片
转载请注明出处同一时候欢迎大家加我的群号。欢迎开车,自己能够去尝试做一下我这里可能也不是非常完整。最好建议大家去管网看文档!
应该是没问题的!
我这人有一点不好不喜欢拖拉!喜欢的事情就去做!
由于年轻!
由于任性!由于代码是敲出来的!
还记得我有个群友代码9.99评分豆瓣棒棒哒!
来个合照【Android ShareSDKQQ 第三方登录so easy()】idkey=74044aec4b56f4a3528a19a40ffb830db1cbfbdb3831b1d0624416ac34175169" target="_blank">
文章图片
推荐阅读
- android 删除相册图片并同步到图库
- Android开发圆形ImageView实现
- git常用命令与AndroidStudio常用快捷键
- Android事件分发机制源代码分析
- Android APK打包流程
- eclipse部署web项目至本地的tomcat但在webapps中找不到
- Android性能调优篇之探索JVM内存分配
- Android ViewPager用法小结
- Android开放百度地图集成