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

2019-03-07  本文已影响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);

上一篇 下一篇

猜你喜欢

热点阅读