QQ 和微信的第三方登录

在项目的build.gradle 里面的

    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath 'com.mob.sdk:MobSDK:+'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
app里面     切记最低APi 为 16

/ 添加插件
apply plugin: 'com.mob.sdk'

// 在MobSDK的扩展中注册SMSSDK的相关信息
MobSDK {
    appKey "2644a0499208c"
    appSecret "c3257ee488e6fbf1502dde11495c2c49"

    SMSSDK {}
    //第三方登录
    ShareSDK {
        //平台配置信息
        devInfo {

            Wechat {//微信
                appId "wx4868b35061f87885"
                appSecret "64020361b8ec4c99936c0e3999a9f249"
            }
            QQ {//QQ
                appId "100371282"
                appKey "aed9b0303e3ed1e27bae87c33761161d"
            }

        }
    }
}

新建app 继承  application   在oncreate()方法里面  初始化

public class Myapp extends Application {
     

    @Override
    public void onCreate() {
        super.onCreate();
        
        MobSDK.init(this);
        
    }
}

两个方法

/*
* 第三方登录QQ
* */
public void getQQ(){

    Platform plat = ShareSDK.getPlatform(QQ.NAME);
    plat.removeAccount(true); //移除授权状态和本地缓存,下次授权会重新授权
    plat.SSOSetting(false); //SSO授权,传false默认是客户端授权,没有客户端授权或者不支持客户端授权会跳web授权
    plat.setPlatformActionListener(new PlatformActionListener() {//授权回调监听,监听oncomplete,onerror,oncancel三种状态
        @Override
        public void onComplete(Platform platform, int i, HashMap, Object> hashMap) {
            Iterator iterator = hashMap.entrySet().iterator();
            while (iterator.hasNext()){
                Map.Entry next = (Map.Entry) iterator.next();
                Object key = next.getKey();
                Object value = next.getValue();
                Log.d("哈哈", "onComplete: "+key+"  "+value);

            }
        }

        @Override
        public void onError(Platform platform, int i, Throwable throwable) {
            Log.d("哈哈", "onError: "+platform.getName()+" "+platform.getDb()+"  "+"  "+platform.getId()+"  "+platform.getPlatformActionListener()+" "+platform.getVersion());
        }

        @Override
        public void onCancel(Platform platform, int i) {
            Log.d("哈哈", "onCancel: "+platform.getName());
        }
    });
    if (plat.isClientValid()) {
        //todo 判断是否存在授权凭条的客户端,true是有客户端,false是无
    }
    if (plat.isAuthValid()) {
        //todo 判断是否已经存在授权状态,可以根据自己的登录逻辑设置
        Toast.makeText(this, "已经授权过了", Toast.LENGTH_SHORT).show();
        return;
    }
    //plat.authorize();    //要功能,不要数据
    plat.showUser(null);    //要数据不要功能,主要体现在不会重复出现授权界面
}
/*
* 第三方微信登录
* */
public void getWeiXin(){

    Platform plat = ShareSDK.getPlatform(Wechat.NAME);
    plat.removeAccount(true); //移除授权状态和本地缓存,下次授权会重新授权
    plat.SSOSetting(false); //SSO授权,传false默认是客户端授权,没有客户端授权或者不支持客户端授权会跳web授权
    plat.setPlatformActionListener(new PlatformActionListener() {//授权回调监听,监听oncomplete,onerror,oncancel三种状态
        @Override
        public void onComplete(Platform platform, int i, HashMap, Object> hashMap) {
            Iterator iterator = hashMap.entrySet().iterator();
            while (iterator.hasNext()){
                Map.Entry next = (Map.Entry) iterator.next();
                Object key = next.getKey();
                Object value = next.getValue();
                Log.d("哈哈", "onComplete: "+key+"  "+value);

            }
        }

        @Override
        public void onError(Platform platform, int i, Throwable throwable) {
            Log.d("哈哈", "onError: "+platform.getName()+" "+platform.getDb()+"  "+"  "+platform.getId()+"  "+platform.getPlatformActionListener()+" "+platform.getVersion());
        }

        @Override
        public void onCancel(Platform platform, int i) {
            Log.d("哈哈", "onCancel: "+platform.getName());
        }
    });
    if (plat.isClientValid()) {
        //todo 判断是否存在授权凭条的客户端,true是有客户端,false是无
    }
    if (plat.isAuthValid()) {
        //todo 判断是否已经存在授权状态,可以根据自己的登录逻辑设置
        Toast.makeText(this, "已经授权过了", Toast.LENGTH_SHORT).show();
        return;
    }
    //plat.authorize();    //要功能,不要数据
    plat.showUser(null);    //要数据不要功能,主要体现在不会重复出现授权界面
}


此文摘自 杜德日 先生的文章点击查看源文

 


你可能感兴趣的:(QQ 和微信的第三方登录)