记一次友盟第三方登录和分享

1,第一次写博客,不要多说,斗图大赛开始

首先就得要一个友盟账号,腾讯开放平台的账号,微信的账号,如果还有其他平台的第三方登录就要申请其他平台的账号

这里就记录一下QQ和微信的,首先在AndroidManifest里面要写

<!-- *************************************友盟第三方集成开始************************************************ -->

<!-- qq -->
<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="tencentQQAppId"/>
    </intent-filter>
</activity>
<activity
    android:name="com.tencent.connect.common.AssistActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

 <!-- 微信 -->
        <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
        <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

<!-- **********************************************友盟第三方集成结束*************************************** -->

2,然后在你自己建的Application类里面初始化友盟,我包了一个方法,在onCreate()调用

  /**
     * 初始化友盟
     */
    private void initUM() {
        //初始化分享
        UMConfigure.setLogEnabled(true);
        UMConfigure.init(this, "友盟appId", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");
        // 微信
        PlatformConfig.setWeixin("微信appId", "微信AppSecret");
        // QQ
        PlatformConfig.setQQZone("QQappId", "QQAppSecret");
    }

现在友盟配置就完成了

3,现在就在登录界面就可以开始写第三方登录的代码了,微信登录好像要打包好的签名,不能登录的话可以试一下是不是因为这个原因

     /*友盟*/
    private UMShareAPI mShareAPI;
    /*初始化*/
    mShareAPI = UMShareAPI.get(LoginActivity.this);


   //点击事件
  @OnClick({R.id.act_login_wx,
            R.id.act_login_qq})
    public void onClick(View view) {
        UMShareConfig config = new UMShareConfig();
        // 每次都调起登录
        config.isNeedAuthOnGetUserInfo(true);
        mShareAPI.setShareConfig(config);
        switch (view.getId()) {
            /*微信*/
            case R.id.act_login_wx:
                if (mShareAPI.isInstall(LoginActivity.this, SHARE_MEDIA.WEIXIN)) {
                    mShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.WEIXIN, authListener);
                } else {
                    showToast("请安装微信客户端");
                }
                break;
            /*QQ*/
            case R.id.act_login_qq:
                if (mShareAPI.isInstall(LoginActivity.this, SHARE_MEDIA.QQ)) {
                    mShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, authListener);
                } else {
                    showToast("请安装QQ客户端");
                }
                break;
            default:
                break;
        }
    }

    /**
    *友盟回调的监听,一定要写
    */
  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        mShareAPI.onActivityResult(requestCode, resultCode, data);
    }

     /**
     * 回调监听,获取第三方的一些数据
     */
    public UMAuthListener authListener = new UMAuthListener() {
        @Override
        public void onStart(SHARE_MEDIA share_media) {
        }

        @Override
        public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
            showToast("授权成功");
            //第三方的openId
            String  openId = map.get("uid");
            //第三方的头像
            String  iconUrl = map.get("iconurl");
            //第三方的名字
            String nickname = map.get("name");
            //全部的数据,要取可以看里面的字段
            showToast(map.toString);
        }

        @Override
        public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
            showToast("授权失败:" + throwable.getMessage());
        }

        @Override
        public void onCancel(SHARE_MEDIA share_media, int i) {
            if (SHARE_MEDIA.WEIXIN.equals(share_media)) {
                showToast("取消微信授权");
            } else if (SHARE_MEDIA.QQ.equals(share_media)) {
                showToast("取消QQ授权");
            }
        }
    };

4.接下来就是第三方分享了,直接上代码,界面是自己写了,因为每个公司要求不一样哈,没有带面板

 /*友盟*/
    private UMShareAPI mShareAPI;
 // 友盟
        mShareAPI = UMShareAPI.get(getActivity());
//点击事件就用Position代替了,界面自己写哈
         switch (position) {
                    case 0:/*微信*/
                        if (mShareAPI.isInstall(getActivity(), SHARE_MEDIA.WEIXIN)) {
                            sharePlatform(SHARE_MEDIA.WEIXIN);
                        } else {
                            showToast("请先安装微信客户端");
                        }
                        break;
                    case 1:/*QQ*/
                        if (mShareAPI.isInstall(getActivity(), SHARE_MEDIA.QQ)) {
                            sharePlatform(SHARE_MEDIA.QQ);
                        } else {
                            showToast("请先安装微信客户端");
                        }
                        break;
                    case 2:/*微信朋友圈*/
                        if (mShareAPI.isInstall(getActivity(), SHARE_MEDIA.WEIXIN)) {
                            sharePlatform(SHARE_MEDIA.WEIXIN_CIRCLE);
                        } else {
                            showToast("请先安装微信客户端");
                        }
                        break;
                    case 3:/*QQ空间*/
                        if (mShareAPI.isInstall(getActivity(), SHARE_MEDIA.QQ)) {
                            sharePlatform(SHARE_MEDIA.QZONE);
                        } else {
                            showToast("请先安装QQ客户端");
                        }
                        break;
                    default:
                        break;
                }

  /**
     * 分享平台
     */
    private void sharePlatform(SHARE_MEDIA platform) {
        UMImage image = new UMImage(getActivity(), R.mipmap.logo);
        // 透明图片不变黑
        image.compressFormat = Bitmap.CompressFormat.PNG;
        UMWeb umWeb = new UMWeb("http://www.baidu.com");
        umWeb.setTitle("分享标题");
        umWeb.setDescription("分享内容");
        umWeb.setThumb(image);
        new ShareAction(getActivity()).setPlatform(platform)
                .setCallback(shareListener)
                .withMedia(umWeb).share();
    }

    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(getActivity(), "分享成功", Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享失败的回调
         * @param platform 平台类型
         * @param t 错误原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
            Toast.makeText(getActivity(), "分享失败" + t.getMessage(), Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享取消的回调
         * @param platform 平台类型
         */
        @Override
        public void onCancel(SHARE_MEDIA platform) {
            Toast.makeText(getActivity(), "取消分享", Toast.LENGTH_LONG).show();
        }
    };

分享就这些代码,现在就是ok了,累啊。人老了,我该学会养生

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值