美文网首页
1.友盟的简单使用(QQ,微信,微博)的分享与登陆

1.友盟的简单使用(QQ,微信,微博)的分享与登陆

作者: 君袅 | 来源:发表于2019-03-07 21:24 被阅读0次

    友盟集成总得来说可以分为:
    1.友盟官方账号申请+SDK集成
    2.第三方账号申请+应用创建
    3.将三方的appId和appKey配置到应用
    4.分享和登录Api调取实现分享和登录

    具体用法可根据官方学习https://developer.umeng.com/docs/66632/detail/66639

    一.友盟官方注册账号

    二.创建应用,生成对应的appkey

    进入友盟,点击:产品|解决方案--->移动统计(U-APP,AI版)--->进入新版-->添加新应用,填写信息并获取appkey,该appKey不和应用包名绑定

    image.png

    将返回回来的 代码:保存下来_____我自己注册的是:5c8085100cafb299810008a8

    三.下载最新版sdk:https://developer.umeng.com/sdk,如图勾选自己需要的,我们选中:移动统计sdk和社会化分享sdk,可以下载demo,在本页面右上角

    image.png

    现在完成后将sdk中的 依赖 和资源往studio的导入

    image.png

    四.申请三方账号

    https://dev.umeng.com/social/android/operation
    我们去申请对应的qq,新浪,和微信
    [图片上传失败...(image-3b1f60-1551963529397)]
    1.QQ:https://connect.qq.com/index.html, 申请账号,进行认证(需要审核),完成之后创建应用
    需要绑定包名和签名(使用别的appid也可以,但开发用自己的)

    2.微信:https://open.weixin.qq.com/
    微信开放平台,需要认证审核,每年300,认证通过可以创建应用,和包名+签名文件绑定

    3.新浪:https://open.weibo.com/
    需要绑定包名和签名(使用别的App Key和App Secret不行),申请完应用需要去高级里面添加授权回调页:
    http://sns.whalecloud.com

    image.png

    申请时将:
    App Key:925279143
    App Secret:fea910b1c2f1ad50c024c0bcd0662dbf
    记下

    要将文件转成安装包后将签名文件

    具体代码

    权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    在清单文件中加入<application>内 这些只有qq,微信,微博 ,其中WXEntryActivity(微信)需要自己建一个在wxapi包里activity继承WXCallbackActivity

            <!--开始-->
            <!--微信-->
            <activity
                android:name=".wxapi.WXEntryActivity"
                android:configChanges="keyboardHidden|orientation|screenSize"
                android:exported="true"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    
            <!--新浪-->
            <activity
                android:name="com.umeng.socialize.media.WBShareCallBackActivity"
                android:configChanges="keyboardHidden|orientation"
                android:theme="@android:style/Theme.Translucent.NoTitleBar"
                android:exported="false"
                >
            </activity>
            <activity android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
                android:configChanges="keyboardHidden|orientation"
                android:exported="false"
                android:windowSoftInputMode="adjustResize"
                >
    
            </activity>
            <activity
                android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
                android:launchMode="singleTask"
                android:name="com.sina.weibo.sdk.share.WbShareTransActivity">
                <intent-filter>
                    <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>
            <!--qq(请注意将我们的qq appkey替换成您自己的qq appkey):-->
            <activity
                android:name="com.tencent.tauth.AuthActivity"
                android:launchMode="singleTask"
                android:noHistory="true" >
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.BROWSABLE" />
    
                    <data android:scheme="tencent100424468" />
                </intent-filter>
            </activity>
            <activity
                android:name="com.tencent.connect.common.AssistActivity"
                android:theme="@android:style/Theme.Translucent.NoTitleBar"
                android:configChanges="orientation|keyboardHidden|screenSize"/>
    
            <!--结束-->
    

    清单文件完成后建一个BaseApp类继承Application一定要在清单文件中注册

    public class BaseApp extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            UMConfigure.init(this, "5a12384aa40fa3551f0001d1"
                    , "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0
    
            PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
            PlatformConfig.setSinaWeibo("925279143", "fea910b1c2f1ad50c024c0bcd0662dbf","http://sns.whalecloud.com");
            PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
        }
    

    具体实现

    1 * 带面板的分享

        //_-------------------------
        /**
         * 带面板的分享
         * 未改appkey和appId
         * 新浪失败
         * qq不用自己的appkey和appId,也能成功,但是以后也一定用自己的
         * wechat,肯定不成功
         */
        private void shareBoard() {
            UMImage image = new UMImage(MainActivity.this, "http://ww1.sinaimg.cn/large/7a8aed7bgw1esq1fnt1s1j20h10pd0us.jpg");//网络图片
            image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
            new ShareAction(MainActivity.this).withText("hello")
                    .withMedia(image)
                    .setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN)
                    .setCallback(shareListener).open();
        }
        private UMShareListener shareListener = new UMShareListener() {
            /**
             * @descrption 分享开始的回调
             * @param platform 平台类型
             */
            @Override
            public void onStart(SHARE_MEDIA platform) {
    
            }
    
            /**
             * @descrption 分享成功的回调
             * @param platform 平台类型
             */
            @Override
            public void onResult(SHARE_MEDIA platform) {
                Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_LONG).show();
            }
    
            /**
             * @descrption 分享失败的回调
             * @param platform 平台类型
             * @param t 错误原因
             */
            @Override
            public void onError(SHARE_MEDIA platform, Throwable t) {
                Toast.makeText(MainActivity.this, "失败" + t.getMessage(),
                        Toast.LENGTH_LONG).show();
            }
    
            /**
             * @descrption 分享取消的回调
             * @param platform 平台类型
             */
            @Override
            public void onCancel(SHARE_MEDIA platform) {
                Toast.makeText(MainActivity.this, "取消了",
                        Toast.LENGTH_LONG).show();
    
            }
        };
    
    
    

    2.不带版的分享

       //-------------------------------------------------
         //不带版的分享
        public void shareNoBorad(SHARE_MEDIA share_media) {
            UMImage image = new UMImage(MainActivity.this,
                    "http://ww2.sinaimg.cn/large/7a8aed7bgw1essxtqxs6jj20mj0tzdhl.jpg");//网络图片
            image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
            new ShareAction(MainActivity.this)
                    .setPlatform(share_media)//传入平台
                    .withText("hello")//分享内容
                    .withMedia(image)
                    .setCallback(shareListener)//回调监听器
                    .share();
        }
    
    

    调用使用

    shareNoBorad(SHARE_MEDIA.QQ);
    shareNoBorad(SHARE_MEDIA.WEIXIN);
    shareNoBorad(SHARE_MEDIA.SINA);

    3.登录

       //-----------------登录------------
    
    
        /**
         * 未改appkey和appId
         * 新浪 失败
         * qq 失败
         * wechat,失败
         * @param media
         */
        public void login(SHARE_MEDIA media){
            UMShareAPI umShareAPI = UMShareAPI.get(this);
            umShareAPI.getPlatformInfo(MainActivity.this, media ,authListener);
        }
    
        UMAuthListener authListener = new UMAuthListener() {
            /**
             * @desc 授权开始的回调
             * @param platform 平台名称
             */
            @Override
            public void onStart(SHARE_MEDIA platform) {
    
            }
    
            /**
             * @desc 授权成功的回调
             * @param platform 平台名称
             * @param action 行为序号,开发者用不上
             * @param data 用户资料返回
             */
            @Override
            public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
                log(data);
                Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_LONG).show();
    
            }
    
            /**
             * @desc 授权失败的回调
             * @param platform 平台名称
             * @param action 行为序号,开发者用不上
             * @param t 错误原因
             */
            @Override
            public void onError(SHARE_MEDIA platform, int action, Throwable t) {
    
                Toast.makeText(MainActivity.this, "失败:" + t.getMessage(),Toast.LENGTH_LONG).show();
            }
    
            /**
             * @desc 授权取消的回调
             * @param platform 平台名称
             * @param action 行为序号,开发者用不上
             */
            @Override
            public void onCancel(SHARE_MEDIA platform, int action) {
                Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_LONG).show();
            }
        };
    
        /*
        * 将登陆的用户信息log出来
        * */
        private void log(Map<String, String> data) {
            for (Map.Entry<String,String> set: data.entrySet()){
                String key = set.getKey();
                String value = set.getValue();
                Log.d("zll", "key: "+key+",value:"+value);
            }
        }
    
    
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            UMShareAPI.get(this).release();
        }
    

    调用使用

    login(SHARE_MEDIA.QQ);
    login(SHARE_MEDIA.WEIXIN);
    login(SHARE_MEDIA.SINA);

    相关文章

      网友评论

          本文标题:1.友盟的简单使用(QQ,微信,微博)的分享与登陆

          本文链接:https://www.haomeiwen.com/subject/erohpqtx.html