友盟接入微信、QQ、微博三方登录、分享

现如今,谁家的应用还没个第三方登录呢?不得接入个微信、QQ、微博登录吗?我做App接入登录不下于三遍了,可以说是驾轻就熟了吧。直接上手。

友盟接入官方文档

实现步骤:

1. 添加jar和res

下载友盟集成工具.jar文件,运行jar文件,选中需要接入第三方平台。

友盟接入微信、QQ、微博三方登录、分享_第1张图片
image.png

点击OK在同级文件夹下生成umeng_integratetool_result文件,将里面文件都考入项目对应目录,里面包括各平台jar包,so库,图片资源文件等。

友盟接入微信、QQ、微博三方登录、分享_第2张图片
image.png

2. 在Application类调用配置第三方平台的id和secrete
        PlatformConfig.setWeixin("wxe3946ac664570cda", "9aa49428437ed36468fb23d81e38e524");
        PlatformConfig.setQQZone("1106703728", "YZ3xnJa6BsikqlQd");
        //PlatformConfig.setSinaWeibo("39212943254", "04b48b094faeb92830c32669824ebdad", "http://sns.whalecloud.com");

初始化UMShareAPI并创建mShareAPI全局对象

@Override
public void onCreate() {
        super.onCreate();
        mShareAPI = UMShareAPI.get(this);
}
3. 微信回调类配置:在包名目录下一层创建wxapi文件夹,再创建WXEntryActivity继承WXCallbackActivity类。
友盟接入微信、QQ、微博三方登录、分享_第3张图片
image.png

WXEntryActivity为空类即可

import com.umeng.socialize.weixin.view.WXCallbackActivity;

public class WXEntryActivity extends WXCallbackActivity {

}

QQ与新浪需要在使用QQ分享或者授权的Activity中,添加:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
4. Manifest添加

添加对应权限


    
    
    
    
    
    
    
    

配置需要的Activity


        
        
        
            
                

                
            
        
        
        
            
                

                
            
        

        
        
            
                

                
                

                
            
        
        
        
        
5. gradle文件添加配置:

添加友盟appkey和messagesecret

        
        

添加正式keystore文件到项目中,并配置


友盟接入微信、QQ、微博三方登录、分享_第4张图片
image.png
    signingConfigs {
        config {
            keyAlias '12345678'
            keyPassword '12345678'
            storeFile file('keystore.jks')
            storePassword '12345678'
        }
    }
    buildTypes {
        release {
            minifyEnabled false   //是否开启代码混淆
//            shrinkResources true   //去除无用资源
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
        debug {
            signingConfig signingConfigs.config
        }
    }
6. 获取第三方登录用户信息:shareMedia平台类型包括SHARE_MEDIA.WEIXIN、SHARE_MEDIA.QQ等。
        AppContext.getShareApi().getPlatformInfo(this, shareMedia, new UMAuthListener() {
            @Override
            public void onStart(SHARE_MEDIA share_media) {}

            @Override
            public void onComplete(SHARE_MEDIA share_media, int i, Map data) {
                String nickName = data.get("name");
                String accessToken = data.get("accessToken");
                String expiration = data.get("expiration");
                String openId = data.get("openid");
                // expiration   时间戳
                // gender  性别
                // iconurl   头像
            }

            @Override
            public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
                ToastUtil.showShortToast(getApplicationContext(),"授权失败");
            }

            @Override
            public void onCancel(SHARE_MEDIA share_media, int i) {
                ToastUtil.showShortToast(getApplicationContext(),"授权取消");
            }
        });

遍历所有map的key和value,这里获取我的微信登录信息:


友盟接入微信、QQ、微博三方登录、分享_第5张图片
image.png

第三方分享

这里以分享网页为例,网页链接是百度首页,显示图标为应用启动图标,标题为title,描述为content。分享成功会通过
UMShareListener进行回调。

    private void thirdShare(SHARE_MEDIA platform){
        String webUrl = "www.baidu.com";
        UMImage image = new UMImage(getApplicationContext(),R.mipmap.ic_launcher);//资源文件
        UMWeb umWeb = new UMWeb(webUrl,"title","content",image); //URL 标题 描述 封面图
        new ShareAction(this)
                .setPlatform(platform)//传入平台
                .withText("HiVideo")//标题
                .withMedia(umWeb)
                .setCallback(shareListener)//回调监听器
                .share();
    }

    private UMShareListener shareListener = new UMShareListener() {
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        @Override
        public void onResult(SHARE_MEDIA platform) {
            Log.i("minfo","分享成功");
        }

        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
            Log.i("minfo","分享失败");
        }

        @Override
        public void onCancel(SHARE_MEDIA platform) {
            Log.i("minfo","分享取消");
        }
    };

调用方法传入各个平台类型即可进行调用。

        thirdShare(SHARE_MEDIA.SINA);
        thirdShare(SHARE_MEDIA.WEIXIN);
        thirdShare(SHARE_MEDIA.WEIXIN_CIRCLE);
        thirdShare(SHARE_MEDIA.QQ);
        thirdShare(SHARE_MEDIA.QZONE);

你可能感兴趣的:(友盟接入微信、QQ、微博三方登录、分享)