2014-03-17
原CSDN博客已弃用,文章会逐渐迁移过来。
转帖请注明本文出自weimeig的博客(http://blog.csdn.net/weimeig/article/details/78818085), 请尊重他人的辛勤劳动成果,谢谢
ShareSDK集成
一、集成
二、第三方开发平台注册
三、项目中使用
一、集成
到mob.com下载ShareSDK,选择要集成的功能并下载,下载好后,解压,并点击QuickIntegrater.rar生成需要功能,得到Sample文件夹,生成时候记得填写项目包名才点击生成,不然会报错。
(1)将Sample文件夹的libs文件夹里的jar包复制到项目下的app文件夹下的libs文件夹内。
(2)res文件夹内的文件,不做任何改名更改,复制到项目下的app文件夹下的res文件夹内。
(3)将ShareSDK.xml文件复制到项目下的app文件夹下的src下的main文件夹下的assets文件夹中,如果没有这个文件夹则创建一个。
(4)将src文件夹内复制到项目下的app文件夹下的src下的main文件夹下的java文件夹中,与自己原包名项目并列。
(5)更改AndroidManifest.xml文件内应用权限,照着官方文档填写即可,或者下载本文提供的demo,从demo中复制AndroidManifest.xml文件内权限到自己的项目
( 6 )AndroidManifest.xml文件内设置您从Mob开发者后台中得到的Appkey和AppSecret,如
此时如果有地方报红,点击AndroidStudio上方工具栏里的BuiId下的Clean Project ,结束后点击RebuiId Project,然后再点击一下这个按钮,
原因是新引入的包需要同步一下,就不报红了。
集成完成。
二、第三方开发平台注册
如需要集成第三方登录是QQ、微信、微博。则分别到对应的第三方开放平台注册账号,如微信是微信第三方开放平台,在平台选择开启登录功能,然后填写完应用相关信息后,得到AppId和AppSecret将两者保存下来,一会第三步要用到。这里需要注意的是,平台填写的应用信息中,包名和应用签名,要和app对应。最后面附上怎么查看应用签名的方法。
特别注明:新浪微博的话,还需要在开放平台里选择回调接口地址,在开放平台应用信息附近找到OAuth2.0 授权设置编辑,设置微博回调地址。
比如官方默认的回调地址(默认的也可以使用):
授权回调页:http://sns.whalecloud.com/sina2/callback
取消授权回调页:http://sns.whalecloud.com/sina2/callback
三、项目中使用
(1)将你在第三方开发平台申请到的AppId和AppSecret填写到src下的main文件夹下的assets文件夹内的ShareSDK.xml文件中,替换掉mob提供的初始的。微博的话,还需要在这个文件里面的微博的配置里,设置RedirectUrl这个参数,微博官方默认的是
RedirectUrl=”http://sns.whalecloud.com/sina2/callback"
如果你申请开发平台时用了默认的,可以设置为这个
(2)第三方登录的方法
`/**
* 第三方登录方法
* Created by weimei on 2017/12/16.
* Email:ucvs@qq.com
*/
private void thirdLogin(String platformName,final String backType) {
Platform wechat = ShareSDK.getPlatform(platformName);
wechat.SSOSetting(false); //设置false表示使用SSO授权方式
if(wechat.isAuthValid()){
wechat.removeAccount(true);
}
wechat.setPlatformActionListener(new PlatformActionListener() {
@Override
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
Log.d(TAG, "onComplete: "+i+new Gson().toJson(hashMap));
if (i == Platform.ACTION_USER_INFOR) {
final PlatformDb platDB = platform.getDb();//获取数平台数据DB
//通过DB获取各种数据
platDB.getToken();
platDB.getUserGender();
platDB.getUserIcon();
platDB.getUserId();
platDB.getUserName();
Log.d(TAG, "onComplete: "+ platDB.getToken()+"-"+ platDB.getUserId()+"-"+ platDB.getUserName());
runOnUiThread(new Runnable() {
@Override
public void run() {
// platDB.getUserId()是唯一的
//这里写你的业务逻辑,如网络请求
// mPresenter.trilateralLogin(backType,platDB.getUserId(),platDB.getUserName(),
// platDB.getUserIcon(),platDB.getUserGender(),LoginActivity.this);
}
});
}
}
@Override
public void onError(Platform platform, int i, Throwable throwable) {
Log.d(TAG, "onError: "+throwable.toString());
}
@Override
public void onCancel(Platform platform, int i) {
/**
* 给用户取消的提示
*/
}
}); // 设置分享事件回调
wechat.authorize();//单独授权
wechat.showUser(null);
}`
然后在需要使用第三方登录的地方调用该方法即可
如果此时报红,则用第一步教的那个方法,同步一下,就不报红了。
此时
QQ调用时,如:
thirdLogin(QQ.NAME,"AndroidQQ");
微信调用时,如:
thirdLogin(Wechat.NAME,"AndroidWechat");
微博调用时,如:
thirdLogin(SinaWeibo.NAME,"Androidweibo");
其中第一个参数的,如:QQ.NAME,是第三方规定的,不可随意更改,第二个参数,是来源,如果你后台的url不需要这个参数,直接删除即可,同时也在thirdLogin方法里面删除即可。
附:查看应用签名的方法。
用密钥打包apk,打包的时候,选择生成release版本,切记不要生成debug版本。
然后安装到手机中。
同时安装下面提供的这个apk。打开这个apk,输入你的应用包名,点击生成,生成的这个就是你的安卓签名。
注意这个是要用你发布app的那个密钥去生成apk,并且输入的包名和你发布的app的包名一致,满足这两个要求前提下,才能生成一致的安卓签名。
安卓签名生成软件
http://download.csdn.net/download/weimeig/10161075
项目Demo下载