原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下载

http://download.csdn.net/download/weimeig/10161093