使用友盟完成qq登录与分享

通过集成友盟来完成qq的第三方登录

第一步:友盟官网–添加一个应用–得到相对应的APPKey
在这里插入图片描述
第二步:开发者平台–文档中心–选择U-Share 社会化分享(安卓集成文档)

第三步:下载社会化分享的SDK文件
在这里插入图片描述

第四步:导入jar包并导入对应的jar包依赖(6个jar包–缺一不可)
在这里插入图片描述
第五步:添加回调Activity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}

第六步:配置Android Manifest XML 清单文件中添加代码

     <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"/>

第六步:权限添加

<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" />

	如果需要使用QQ纯图分享或避免其它平台纯图分享的时候图片不被压缩,可以增加以下权限:
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>   
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

第七步:初始化设置
新建一个App.java文件–进行初始化–记得在清单文件中注册App.java

@Override
    public void onCreate() {
        super.onCreate();
        UMConfigure.init(this,"5a12384aa40fa3551f0001d1"
                ,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0

    }

清单文件中注册App.java

<application
        android:name=".ui.activity.App"
        android:allowBackup="true"
        android:icon="@mipmap/zfb_icon"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

第八步:在App.java初始化的下面继续写第三方平台的appkey

        PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
        //豆瓣RENREN平台目前只能在服务器端配置
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
        PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
        PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
        PlatformConfig.setAlipay("2015111700822536");
        PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
        PlatformConfig.setPinterest("1439206");
        PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
        PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
        PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J");
        PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");
        PlatformConfig.setYnote("9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");

第九步:获取用户资料
在点击事件里写入代码 第二个参数代表要登录的平台:比如qq 微信 新浪

mShareAPI.getPlatformInfo(UserinfoActivity.this, SHARE_MEDIA.QQ, umAuthListener);

第十步:umAuthListener授权回调(写在onCreatView方法外)

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) {
			//得到用户名以及头像信息
            String name = data.get( "name" );
            String iconurl = data.get( "iconurl" );
            //带值跳转--用户名name和头像iconurl传到我的页面
            Intent intent = new Intent( LoginActivity.this, ZhuyeActivity.class );
            intent.putExtra( "name",name );
            intent.putExtra( "iconurl",iconurl );
            startActivity( intent );
            Toast.makeText( LoginActivity.this, "qq登录成功", Toast.LENGTH_SHORT ).show();
       }

        /**
         * @desc 授权失败的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param t 错误原因
         */
        @Override
       public void onError(SHARE_MEDIA platform, int action, Throwable t) {

           Toast.makeText(mContext, "失败:" + t.getMessage(),                                     Toast.LENGTH_LONG).show();
        }

        /**
         * @desc 授权取消的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         */
        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText(mContext, "取消了", Toast.LENGTH_LONG).show();
        }
    };

完成------------------------------------------------------------------------------------------------------

下面为具体实现代码
App.java文件中
public class App extends Application {

@Override
    public void onCreate() {
        super.onCreate();
        //qq
        UMConfigure.init(this,"5c4126d3f1f5565a22000c65"
                ,"umeng",UMConfigure.DEVICE_TYPE_PHONE,null);//58edcfeb310c93091c000be2 5965ee00734be40b580001a0


        PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
        //豆瓣RENREN平台目前只能在服务器端配置
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
        PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
        PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
        PlatformConfig.setAlipay("2015111700822536");
        PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
        PlatformConfig.setPinterest("1439206");
        PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
        PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
        PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J");
        PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");
    }

}

LoginActivity中
public class LoginActivity extends AppCompatActivity implements Contract_Login.View_Interface_Login {


    private TextView tv_kszc;
    private Button btn_login;
    private EditText et_login_phone;
    private EditText et_login_pwd;
    private Contract_Login.Presenter_Interface_Login presenter_login;
    private ImageView img_login_eye;
    private CheckBox ck_jzmm;
    private SharedPreferences sp;
    private ImageView img_qq;

    //授权回调
    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) {
            //跳转
            Intent intent = new Intent( LoginActivity.this, ZhuyeActivity.class );
            startActivity( intent );
            Toast.makeText( LoginActivity.this, "qq登录成功", Toast.LENGTH_SHORT ).show();
        }

        /**
         * @desc 授权失败的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param t 错误原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {

            Toast.makeText( LoginActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG ).show();
        }

        /**
         * @desc 授权取消的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         */
        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText( LoginActivity.this, "取消了", Toast.LENGTH_LONG ).show();
        }
    };



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_login );
        tv_kszc = (TextView)findViewById( R.id.tv_kszc );
        btn_login = (Button)findViewById( R.id.btn_login );
        et_login_phone = (EditText)findViewById( R.id.et_login_phone );
        et_login_pwd = (EditText)findViewById( R.id.et_login_pwd );
        img_login_eye = (ImageView)findViewById( R.id.img_login_eye );
        ck_jzmm = (CheckBox)findViewById( R.id.ck_jzmm );
        img_qq = (ImageView)findViewById( R.id.img_qq );

       
        //点击qq第三方登录
        qq();
    }

    //点击qq第三方登录
    private void qq() {
        img_qq.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取用户资料
                UMShareAPI mShareAPI = UMShareAPI.get( LoginActivity.this );
                mShareAPI.getPlatformInfo( LoginActivity.this, SHARE_MEDIA.QQ, authListener );
            }
        } );
    }
  
    //qq回调activity
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult( requestCode, resultCode, data );
        UMShareAPI.get( this ).onActivityResult( requestCode, resultCode, data );
    }

}

**

下面我们来介绍一下分享的集成(分享:QQ好友 qq群聊 QQ空间等)

**
分享(不带面板)
分享可以通过如下代码实现:

new ShareAction(MainActivity.this)
.setPlatform(SHARE_MEDIA.QQ)//传入平台
.withText("hello")//分享内容
.setCallback(umShareListener)//回调监听器
.share();

其中umShareListener为回调监听,构建如下:

 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(ShareDetailActivity.this,"成功                                        了",Toast.LENGTH_LONG).show();
        }

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

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

        }
    };

链接
分享链接可以使用UMWeb进行分享:qq不支持纯文本分享

UMWeb  web = new UMWeb(Defaultcontent.url);
        web.setTitle("This is music title");//标题
        web.setThumb(thumb);  //缩略图
        web.setDescription("my description");//描述

然后调用将这个参数设置到ShareAction中:

new ShareAction(ShareActivity.this)
    .withMedia(web)
    .share();

之后我们就可以分享自己想要分享的连接了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值