1,第一次写博客,不要多说,斗图大赛开始
首先就得要一个友盟账号,腾讯开放平台的账号,微信的账号,如果还有其他平台的第三方登录就要申请其他平台的账号
这里就记录一下QQ和微信的,首先在AndroidManifest里面要写
2,然后在你自己建的Application类里面初始化友盟,我包了一个方法,在onCreate()调用
/**
* 初始化友盟
*/
private void initUM() {
//初始化分享
UMConfigure.setLogEnabled(true);
UMConfigure.init(this, "友盟appId", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");
// 微信
PlatformConfig.setWeixin("微信appId", "微信AppSecret");
// QQ
PlatformConfig.setQQZone("QQappId", "QQAppSecret");
}
现在友盟配置就完成了
3,现在就在登录界面就可以开始写第三方登录的代码了,微信登录好像要打包好的签名,不能登录的话可以试一下是不是因为这个原因
/*友盟*/
private UMShareAPI mShareAPI;
/*初始化*/
mShareAPI = UMShareAPI.get(LoginActivity.this);
//点击事件
@OnClick({R.id.act_login_wx,
R.id.act_login_qq})
public void onClick(View view) {
UMShareConfig config = new UMShareConfig();
// 每次都调起登录
config.isNeedAuthOnGetUserInfo(true);
mShareAPI.setShareConfig(config);
switch (view.getId()) {
/*微信*/
case R.id.act_login_wx:
if (mShareAPI.isInstall(LoginActivity.this, SHARE_MEDIA.WEIXIN)) {
mShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.WEIXIN, authListener);
} else {
showToast("请安装微信客户端");
}
break;
/*QQ*/
case R.id.act_login_qq:
if (mShareAPI.isInstall(LoginActivity.this, SHARE_MEDIA.QQ)) {
mShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, authListener);
} else {
showToast("请安装QQ客户端");
}
break;
default:
break;
}
}
/**
*友盟回调的监听,一定要写
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mShareAPI.onActivityResult(requestCode, resultCode, data);
}
/**
* 回调监听,获取第三方的一些数据
*/
public UMAuthListener authListener = new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA share_media) {
}
@Override
public void onComplete(SHARE_MEDIA share_media, int i, Map map) {
showToast("授权成功");
//第三方的openId
String openId = map.get("uid");
//第三方的头像
String iconUrl = map.get("iconurl");
//第三方的名字
String nickname = map.get("name");
//全部的数据,要取可以看里面的字段
showToast(map.toString);
}
@Override
public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
showToast("授权失败:" + throwable.getMessage());
}
@Override
public void onCancel(SHARE_MEDIA share_media, int i) {
if (SHARE_MEDIA.WEIXIN.equals(share_media)) {
showToast("取消微信授权");
} else if (SHARE_MEDIA.QQ.equals(share_media)) {
showToast("取消QQ授权");
}
}
};
4.接下来就是第三方分享了,直接上代码,界面是自己写了,因为每个公司要求不一样哈,没有带面板
/*友盟*/
private UMShareAPI mShareAPI;
// 友盟
mShareAPI = UMShareAPI.get(getActivity());
//点击事件就用Position代替了,界面自己写哈
switch (position) {
case 0:/*微信*/
if (mShareAPI.isInstall(getActivity(), SHARE_MEDIA.WEIXIN)) {
sharePlatform(SHARE_MEDIA.WEIXIN);
} else {
showToast("请先安装微信客户端");
}
break;
case 1:/*QQ*/
if (mShareAPI.isInstall(getActivity(), SHARE_MEDIA.QQ)) {
sharePlatform(SHARE_MEDIA.QQ);
} else {
showToast("请先安装微信客户端");
}
break;
case 2:/*微信朋友圈*/
if (mShareAPI.isInstall(getActivity(), SHARE_MEDIA.WEIXIN)) {
sharePlatform(SHARE_MEDIA.WEIXIN_CIRCLE);
} else {
showToast("请先安装微信客户端");
}
break;
case 3:/*QQ空间*/
if (mShareAPI.isInstall(getActivity(), SHARE_MEDIA.QQ)) {
sharePlatform(SHARE_MEDIA.QZONE);
} else {
showToast("请先安装QQ客户端");
}
break;
default:
break;
}
/**
* 分享平台
*/
private void sharePlatform(SHARE_MEDIA platform) {
UMImage image = new UMImage(getActivity(), R.mipmap.logo);
// 透明图片不变黑
image.compressFormat = Bitmap.CompressFormat.PNG;
UMWeb umWeb = new UMWeb("http://www.baidu.com");
umWeb.setTitle("分享标题");
umWeb.setDescription("分享内容");
umWeb.setThumb(image);
new ShareAction(getActivity()).setPlatform(platform)
.setCallback(shareListener)
.withMedia(umWeb).share();
}
private UMShareListener shareListener = new UMShareListener() {
/**
* @descrption 分享开始的回调
* @param platform 平台类型
*/
@Override
public void onStart(SHARE_MEDIA platform) {
}
/**
* @descrption 分享成功的回调
* @param platform 平台类型
*/
@Override
public void onResult(SHARE_MEDIA platform) {
Toast.makeText(getActivity(), "分享成功", Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(getActivity(), "分享失败" + t.getMessage(), Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享取消的回调
* @param platform 平台类型
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(getActivity(), "取消分享", Toast.LENGTH_LONG).show();
}
};
分享就这些代码,现在就是ok了,累啊。人老了,我该学会养生