最近项目中使用到了友盟(社会化Android组件),开始集成的时候没来及细读友盟提供的开发文档。现在来总结一下集成过程中遇到的问题。
##### 1.申请第三方账号 友盟 新浪微博开放平台 微信开放平台 腾讯开放平台 具体操作可以跟上面的链接进行操作,也可参照:http://dev.umeng.com/social/android/operation#1_3 ##### 2.注册应用 在申请账号的时候需要AppKey在每个开放平台中都提供的有获取应用AppKey的生成工具。每个平台注册的时候要保证他们的Appkey一致不然会出现无法使用的情况。开放平台注册成功了,在友盟注册应用:http://mobile.umeng.com/apps ##### 3.集成友盟SDK SDK下载地址 目前我使用的是最新的SDK v5.2.1,可自行根据项目需要集成相应的功能。下载下来的SDK目录结构


2. Application 中注册ruby
//开放平台注册的 appId AppKey
{
//微信 appid appsecret
PlatformConfig.setWeixin("#####", "#####");
// 新浪微博 appid appsecret
PlatformConfig.setSinaWeibo("####", "####");
//qq appid appsecret
PlatformConfig.setQQZone("####", "#####");
}
以上配置完成,就可以在项目中使用使用友盟提供的接口进行登录操作。
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Bind(R.id.iv_wechat)
ImageView mWechat;
@Bind(R.id.iv_qq)
ImageView mQQ;
@Bind(R.id.iv_sina)
ImageView mSina;
private UMShareAPI mShareAPI = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//首先获取UMShareAPI
mShareAPI = UMShareAPI.get(this);
}
@OnClick({R.id.iv_wechat, R.id.iv_qq, R.id.iv_sina})
@Override
public void onClick(View view) {
// 选取授权平台,并授权
SHARE_MEDIA platform = null;
switch (view.getId()) {
case R.id.iv_wechat:
platform = SHARE_MEDIA.WEIXIN;
break;
case R.id.iv_qq:
platform = SHARE_MEDIA.QQ;
break;
case R.id.iv_sina:
platform = SHARE_MEDIA.SINA;
break;
}
// doOauth接口返回的授权信息
mShareAPI.doOauthVerify(MainActivity.this, platform, umAuthListener);
}
private UMAuthListener umAuthListener = new UMAuthListener() {
@Override
public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
if (data != null) {
//调用getplatforminfo接口来获取返回值
mShareAPI.getPlatformInfo(MainActivity.this, platform, umAuthMesListener);
}
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText(MainActivity.this, "授权取消", Toast.LENGTH_SHORT);
}
};
private UMAuthListener umAuthMesListener = new UMAuthListener() {
@Override
public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
Toast.makeText(MainActivity.this, "授权成", Toast.LENGTH_SHORT);
String m = share_media.toString();
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> entry = iterator.next();
//再次遍历取出你需要的参数
}
}
@Override
public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
}
@Override
public void onCancel(SHARE_MEDIA share_media, int i) {
}
};
//重写onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mShareAPI.onActivityResult(requestCode, resultCode, data);
}
}
值得注意的是友盟提供了一个删除授权使用的接口:
mShareAPI.deleteOauth(AuthActivity.this, platform, umdelAuthListener);
到此第三方登录就算完成,是不是很简单。需要我们注意的是注册开放平台的时候要按照流程来。还有就是在应用中注册时保证应用appkey 和 appId 要正确。关于友盟的第三方分享友盟文档中也详细的介绍过了。(多读几遍开发文档会发如此简单)
小栗子:Demo
在接入SDK时遇到的一些常见问题和学习资料: