官方文档
一:集成(gradle)
(1)首先在根目录下面的build.gradle
(2)再在项目的build.gradle加入
(3)然后创建MobSDK.gradle文件配置appKey和AppSecret等信息
(4)在自定义的application中初始化
以上就算集成成功了。下面是使用:
注意:有时候会出现微信分享不成功的情况,一般是微信分享不了: 1、测试没有打包 2、打包的keystore跟微信开放平台上面的不一致, 导致MD5码不一致 3、分享参数错误 4、应用没有审核通过 5、包名跟开放平台上面的不一致。
可以Mob的开发者后台看你所有创建的分享的应用
最后看一下效果图:
集成三方登入的步骤和以上一样,分享和登入只需要集成一次即可:
public class LoginActivity extends Activity implements PlatformActionListener, Handler.Callback, View.OnClickListener {
private static final String TAG = "LoginActivity";
private static final int MSG_ACTION_CCALLBACK = 0;
private ImageView ivWxLogin;
private ImageView ivQqLogin;
private ImageView ivBlog;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
initView();
initListener();
initData();
}
public void initView() {
ivWxLogin = (ImageView) findViewById(R.id.iv_wx_login);
ivQqLogin = (ImageView) findViewById(R.id.iv_qq_login);
ivBlog = (ImageView) findViewById(R.id.iv_blog);
}
public void initListener() {
ivWxLogin.setOnClickListener(this);
ivQqLogin.setOnClickListener(this);
ivBlog.setOnClickListener(this);
}
public void initData() {
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.iv_wx_login:
Platform wechat = ShareSDK.getPlatform(Wechat.NAME);
wechat.setPlatformActionListener(this);
wechat.SSOSetting(false);
authorize(wechat, 1);
break;
case R.id.iv_qq_login:
Platform qq = ShareSDK.getPlatform(QQ.NAME);
qq.setPlatformActionListener(this);
qq.SSOSetting(false);
authorize(qq, 2);
break;
case R.id.iv_blog:
Platform sina = ShareSDK.getPlatform(SinaWeibo.NAME);
sina.setPlatformActionListener(this);
sina.SSOSetting(false);
authorize(sina, 3);
break;
default:
break;
}
}
//授权
private void authorize(Platform plat, int type) {
switch (type) {
case 1:
showProgressDialog(getString(R.string.opening_wechat));
break;
case 2:
showProgressDialog(getString(R.string.opening_qq));
break;
case 3:
showProgressDialog(getString(R.string.opening_blog));
break;
}
if (plat.isAuthValid()) { //如果授权就删除授权资料
plat.removeAccount(true);
}
plat.showUser(null);//授权并获取用户信息
}
//登陆授权成功的回调
@Override
public void onComplete(Platform platform, int i, HashMap<String, Object> res) {
Message msg = new Message();
msg.what = MSG_ACTION_CCALLBACK;
msg.arg1 = 1;
msg.arg2 = action;
msg.obj = platform;
UIHandler.sendMessage(msg, this); //发送消息
}
//登陆授权错误的回调
@Override
public void onError(Platform platform, int i, Throwable t) {
Message msg = new Message();
msg.what = MSG_ACTION_CCALLBACK;
msg.arg1 = 2;
msg.arg2 = action;
msg.obj = t;
UIHandler.sendMessage(msg, this);
}
//登陆授权取消的回调
@Override
public void onCancel(Platform platform, int i) {
Message msg = new Message();
msg.what = MSG_ACTION_CCALLBACK;
msg.arg1 = 3;
msg.arg2 = action;
msg.obj = platform;
UIHandler.sendMessage(msg, this);
}
//登陆发送的handle消息在这里处理
@Override
public boolean handleMessage(Message message) {
hideProgressDialog();
switch (message.arg1) {
case 1: { // 成功
Toast.makeText(LoginActivity.this, "授权登陆成功", Toast.LENGTH_SHORT).show();
//获取用户资料
Platform platform = (Platform) message.obj;
String userId = platform.getDb().getUserId();//获取用户账号
String userName = platform.getDb().getUserName();//获取用户名字
String userIcon = platform.getDb().getUserIcon();//获取用户头像
String userGender = platform.getDb().getUserGender(); //获取用户性别,m = 男, f = 女,如果微信没有设置性别,默认返回null
Log.d(TAG,userIcon);
Toast.makeText(LoginActivity.this, "用户信息为--用户名:" + userName + " 性别:" + userGender+" 头像:"+userIcon, Toast.LENGTH_SHORT).show();
//下面就可以利用获取的用户信息登录自己的服务器或者做自己想做的事啦!
//。。。
}
break;
case 2: { // 失败
Toast.makeText(LoginActivity.this, "授权登陆失败", Toast.LENGTH_SHORT).show();
}
break;
case 3: { // 取消
Toast.makeText(LoginActivity.this, "授权登陆取消", Toast.LENGTH_SHORT).show();
}
break;
}
return false;
}
//显示dialog
public void showProgressDialog(String message) {
progressDialog = new ProgressDialog(this);
progressDialog.setMessage(message);
progressDialog.setCancelable(true);
progressDialog.show();
}
//隐藏dialog
public void hideProgressDialog() {
if (progressDialog != null)
progressDialog.dismiss();
}
}
注意如果有时候出现一直提示重新授权qq登入的时候,有可能是因为腾讯开发平台qq登入审核没有通过,qq分享是不需要审核的。