有绑定的状态,自然也有取消绑定的状态:
这里的取消绑定只是简单改变应用内的一个状态罢了,并不会跟我们的服务端交互,也不会影响我们的账号登录的状态。
说了这么多,也没看见代码,你们会不会打我,尼玛,打人不打脸,打脸伤自尊,好坏好坏的。
下面贴使用友盟做的账号绑定:
// 整个平台的Controller,负责管理整个SDK的配置、操作等处理
private UMSocialService mController = UMServiceFactory
.getUMSocialService(AppConstants.DESCRIPTOR);
/**
- 配置分享平台参数
*/
private void configPlatforms() {
// 添加新浪sso授权
mController.getConfig().setSsoHandler(new SinaSsoHandler());
// mController.getConfig().setSinaCallbackUrl(“http://sns.whalecloud.com/sina2/callback”);
// 添加QQ、QZone平台
addQQPlatform();
}
private void addQQPlatform() {
String appId = AppConstants.QQZONE_APPID;
String appKey = AppConstants.QQZONE_APPKEY;
// 添加QQ支持, 并且设置QQ分享内容的target url
UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(SettingActivity.this,
appId, appKey);
qqSsoHandler.setTargetUrl(“http://www.umeng.com”);
qqSsoHandler.addToSocialSDK();
}
在Onclick方法中处理点击事件:
登录方法
/**
-
授权。如果授权成功,则获取用户信息
-
@param platform
*/
private void login(final SHARE_MEDIA platform) {
mController.doOauthVerify(SettingActivity.this, platform,
new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
LogUtils.logi(TAG, “onStart------”
- Thread.currentThread().getId());
ToastUtils.showShort(SettingActivity.this,
getString(R.string.oauth_begin));
}
@Override
public void onError(SocializeException e,
SHARE_MEDIA platform) {
LogUtils.logi(TAG, “onError------”
- Thread.currentThread().getId());
ToastUtils.showShort(SettingActivity.this,
getString(R.string.oauth_fail));
}
@Override
public void onComplete(Bundle value, SHARE_MEDIA platform) {
LogUtils.logi(TAG, “onComplete------”
- Thread.currentThread().getId());
// 获取uid
String uid = value.getString(“uid”);
if (value != null && !TextUtils.isEmpty(uid)) {
// uid不为空,获取用户信息
getUserInfo(platform);
} else {
ToastUtils.showShort(SettingActivity.this,
getString(R.string.oauth_fail));
}
}
@Override
public void onCancel(SHARE_MEDIA platform) {
LogUtils.logi(TAG, “onCancel------”
- Thread.currentThread().getId());
ToastUtils.showShort(SettingActivity.this,
getString(R.string.oauth_cancle));
}
});
}
**
获取平台信息**
/**
-
获取用户信息
-
@param platform
*/
private void getUserInfo(final SHARE_
MEDIA platform) {
mController.getPlatformInfo(SettingActivity.this, platform,
new UMDataListener() {
@Override
public void onStart() {
// 开始获取
showProgressDialog();
}
@Override
public void onComplete(int status, Map<String, Object> info) {
LogUtils.logi(“third login”, info.toString());
String sns_id = “”;
String sns_avatar = “”;
String sns_loginname = “”;
if (info != null) {
String sns = “”;
if (platform == SHARE_MEDIA.SINA) { // 新浪微博
sns = “sina”;
sns_id = info.get(“uid”).toString();
sns_avatar = info.get(“profile_image_url”)
.toString();
sns_loginname = info.get(“screen_name”)
.toString();
} else if (platform == SHARE_MEDIA.QQ) { // QQ
sns = “qq”;
sns_id = info.get(“uid”).toString();
sns_avatar = info.get(“profile_image_url”)
.toString();
sns_loginname = info.get(“screen_name”)
.toString();
} else if (platform == SHARE_MEDIA.WEIXIN) { // 微信
sns = “wechat”;
sns_id = info.get(“openid”).toString();
sns_avatar = info.get(“headimgurl”).toString();
sns_loginname = info.get(“nickname”).toString();
} else if (platform == SHARE_MEDIA.DOUBAN) { // 豆瓣
sns = “douban”;
sns_id = info.get(“uid”).toString();
sns_avatar = info.get(“profile_image_url”)
.toString();
sns_loginname = info.get(“screen_name”)
.toString();
}
LogUtils.loge(“weixin”, sns + “,” + sns_id + “,”
- sns_loginname);
HttpRequestHelper.getInstance().getUserBySns(
SettingActivity.this,
sns,
sns_id,
sns_avatar,
sns_loginname,
new GetUserBySnsResponse(platform, sns,
sns_id, sns_avatar, sns_loginname));
}
}
});
}
解除绑定方法
/**
-
注销本次登陆
-
@param platform
*/
private void logout(final SHARE_MEDIA platform) {
mController.deleteOauth(SettingActivity.this, platform,
new SocializeClientListener() {
@Override
public void onStart() {
}
@Override
public void onComplete(int status, SocializeEntity entity) {
String showText = “解除” + platform.toString() + “平台授权成功”;
if (status != StatusCode.ST_CODE_SUCCESSED) {
showText = “解除” + platform.toString() + “平台授权失败[”
- status + “]”;
} else {
if (platform == SHARE_MEDIA.SINA) {
sinaBindingText
.setText(getString(R.string.setting_unbind));
StorageUtils.setShareValue(
SettingActivity.this,
StorageUtils.KEY_SINA_BINDING, false);
} else if (platform == SHARE_MEDIA.QQ) {
qqBindingText
.setText(getString(R.string.setting_unbind));
StorageUtils.setShareValue(
SettingActivity.this,
StorageUtils.KEY_QQ_BINDING, false);
}
}
Toast.makeText(SettingActivity.this, showText,
Toast.LENGTH_SHORT).show();
}
});
}
取消对话框
最后
小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-JTm6u2E7-1719020954362)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
资料⬅专栏获取
geUtils.KEY_QQ_BINDING, false);
}
}
Toast.makeText(SettingActivity.this, showText,
Toast.LENGTH_SHORT).show();
}
});
}
取消对话框
最后
小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-JTm6u2E7-1719020954362)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
资料⬅专栏获取