短视频APP源码开发,APP间的授权登录

本文详细介绍了在短视频APP源码开发中如何实现跨应用授权登录,包括从A应用发起授权请求,到B应用处理请求并返回授权信息的完整流程。涉及关键步骤如:使用URI启动B应用的授权页面,通过广播接收授权结果,以及在B应用中处理授权逻辑。同时,提供了A应用和B应用的相关代码示例和AndroidManifest.xml配置。
摘要由CSDN通过智能技术生成

在短视频APP源码开发时,要实现APP间的授权登录,例如用微信或QQ等信息登录短视频APP源码。

1,实现短视频APP源码开发时,APP间相互调起
2,拉起指定的授权页面(SignActivity)
3,应用间数据相互传递

二A应用(调用者)业务代码与布局

调用者A,MainActivity 页面代码
MainActivity简单一个发起授权按钮,下面是相关逻辑,博主面向不同读者做了统一适配,详细3步注释如下
1,注册按钮与事件,发起事件核心代码intent.setData(Uri.parse(mUri))
2,注册广播,核心代码 intentFilter.addAction(“kx.com.kx.b.sign”) ,action读者可自行定义
3,接收广播回调回来的参数,进行处理

public class MainActivity extends AppCompatActivity {

    private Button mBt;
    // com.kx.b 是B授权包名,如果读者Uri调起APP不熟悉,请查阅Uri拉起APP相关知识点,博主有时间的话,会在下篇补上相关知识点
    private String mUri = "kx://com.kx.b/sign?type=1&user_package_name=com.kx.b";
    private MyBroadcastReceiver mReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
		
		//操作1 按钮发起
        mBt = findViewById(R.id.bt);
        mBt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setData(Uri.parse(mUri));//参数拼接在URI后面 type=1是授权页面,user_package_name使用者包名,后续参数可自行添加
                intent.putExtra("", "");//这里Intent也可传递参数,但是一般情况下都会放到上面的URL中进行传递
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }
        });

		//操作2 
		//注册广播接受者,接收授权成功返回广播信息
        mReceiver = new MyBroadcastReceiver();
        IntentFilter intentFilter = new IntentFilter();
        //kx.com.kx.b.sign 自行定义action 即可
        intentFilter.addAction("kx.com.kx.b.sign");
        registerReceiver(mReceiver, intentFilter);
    }


	//操作3 
	//BroadcastReceiver 接收授权成功返回广播信息,TODO
    private class MyBroadcastReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            // 授权成功  返回token,app_pkg
            Toast.makeText(MainActivity.this,"授权成功!",Toast.LENGTH_SHORT).show();
            final String token = intent.getStringExtra("token");
            final String app_pkg = intent.getStringExtra("app_pkg");
            mBt.setText("token=" + token + "\n"+"app_pkg=" + app_pkg);

            //todo 调起方登录操作 做你需要的需求
        }
    }

	//别忘了回收广播  不然会报error,这里是一个内存回收的知识点,第二个有时间博主会补上的知识点
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(mReceiver);
    }
}

MainActivity 对应的activity_main.xml布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/bt"
        android:text="APP授权登陆"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

</android.support.constraint.ConstraintLayout>


A应用注册AndroidManifest.xml清单添加权限

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

B应用(授权应用)业务代码与布局代码
B(授权应用),SignActivity 页面代码
1,SignActivity打开前,先处理A应用数据,传递给服务器校验是否授权
2,服务器给予授权,则是上面gif看到正常页面,点击按钮授权即可
3,B应用未登录先走登录页面,登录后再进入上面授权页面
4, 按钮授权 核心代码intent1.setAction(“kx.com.kx.b.sign”) ,sendBroadcast(intent1);

public class SignActivity extends AppCompatActivity implements View.OnClickListener {

    private Button mBt;
    private String mUser_package_name;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign);

        mBt = findViewById(R.id.bt_confirm_login);
        mBt.setOnClickListener(this);
        mBt.setEnabled(false);

        //获取传递的数据
        Intent intent = getIntent();
        Uri uri = intent.getData();

        //获取参数值
        String type = uri.getQueryParameter("type");
        mUser_package_name = uri.getQueryParameter("user_package_name");

        //类型type 检验
        if (TextUtils.equals(type, "1")) {
            //Todo 未登录 处理
            request5037();
        }
    }

    /**
     * 外部 app 拉起授权 (code:5037)
     * 服务器校验 是否授权
     * 授权 页面A状态
     */

    private void request5037() {
        mBt.setEnabled(true);
    }


    @Override
    public void onClick(View v) {
        Intent intent1 = new Intent();
        intent1.setAction("kx.com.kx.bapp.sign");
        intent1.putExtra("token", "xxxx-xxxx-xxxxx");
        intent1.putExtra("app_pkg", "com.kx.aapp");
        sendBroadcast(intent1);
        finish();
    }
}


SignActivity 对应的布局代码activity_sign.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">


    <View
        android:layout_width="match_parent"
        android:layout_height="2px"
        android:layout_gravity="center_horizontal"
        android:background="@color/color_eeeeee"/>

    <ImageView
        android:id="@+id/img_head"
        android:layout_width="85dp"
        android:layout_height="85dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="60dp"
        android:background="@mipmap/ic_launcher"/>

    <TextView
        android:id="@+id/tv_app_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="30dp"
        android:layout_marginTop="10dp"
        android:textSize="18sp"
        android:text="B应用"
        android:textColor="@color/color_333333"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="2px"
        android:layout_gravity="center_horizontal"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:background="@color/color_eeeeee"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="15dp"
        android:text="登录后应用将获取一下权限"
        android:textColor="@color/color_333333"
        android:textSize="14sp"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="15dp"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="7dp"
            android:layout_height="7dp"
            android:layout_gravity="center_vertical"
            android:background="@drawable/shape10_bg_bfbfbf"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="8dp"
            android:text="获取的公开信息(昵称、头像等)"
            android:textColor="@color/color_bfbfbf"
            android:textSize="11sp"/>

    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll_success_show"
        android:visibility="gone"
        android:gravity="center_vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="15dp"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/img_use_head"
            android:layout_width="28dp"
            android:layout_height="28dp"
            />

        <TextView
            android:layout_marginLeft="10dp"
            android:textSize="14sp"
            android:textColor="@color/color_333333"
            android:id="@+id/tv_use_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>


    </LinearLayout>


    <Button
        android:id="@+id/bt_confirm_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="15dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="30dp"
        android:padding="6dp"
        android:text="@string/comfirm_login"
        android:textColor="@color/white"
        android:textSize="20sp"/>

</LinearLayout>

B应用在清单文件AndroidManifest.xml 需要配置

        <!--授权页面-->
        <activity android:name=".SignActivity"
                  android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.DELETE"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <data
                    android:host="com.kx.bapp"
                    android:path="/sign"
                    android:scheme="kx"/>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

以上就是“短视频APP源码开发,APP间的授权登录”的全部内容,希望对大家有帮助。

很不错的一款直播视频源码,支持二次开发原生视频app源码 1.登录注册:支持手机验证码注册登录,QQ、微信、Facebook、Twitter一键登录及分享,登录后需要进行手机验证; 2.首页列表:首页展示热门直播、附近直播、关注主播列表,可在后台进行直播推荐置顶操作。直播封面显示主播名称、直播状态、房类型、房标题等,附近直播列表显示主播距离; 3.搜索功能:可根据主播名称和主播ID进行主播搜索,并添加关注; 4.每日签到:用户每日签到送礼,可收到系统赠送的金币奖励; 5.互动直播:开播前可进行封面图编辑上传,添加直播标题,选择直播房类型,包含密码房、计时收费房、门票房等,进行美颜设置,开播位置定位等; 6.美颜滤镜:全局美颜功能,美肤美形,可实现十级美颜调节,20余款不同风格的滤镜素材,支持50余款动态贴纸素材,可用于直播和小视频拍摄编辑; 7.送礼打赏:在线送礼打赏,礼物可实现多重连发,支持豪华礼物定制,新增热门礼物、守护礼物、幸运礼物等礼物类别; 8.弹幕私信:直播内可发送弹幕消息,也可以给主播和其他联系人发送私信进行聊天; 9.排行榜单:可在排行榜单查看主播收益排行及用户打赏排行信息; 10.用户中心:可进行用户基础信息设置,查看各类系统功能选项菜单; 特色功能 1.互动连麦:主播开播后,用户可向主播发起互动连麦请求,主播接受请求后进行连麦互动; 2.互动游戏:主播可在直播内开启互动小游戏,丰富互动直播玩法,系统支持5款小游戏; 3.创建家族:上传认证资料即可创建家族,也可加入已有的家族,分享家族主播礼物收益; 4.在线商城:可充值购买VIP会员,购买靓号及坐骑,用户进入直播时会有进场特效; 5.三级分销:单独的直播分享邀请码和推广二维码图片,分享直播获取礼物分成收益; 7.私密直播:支持普通直播房、密码房、门票房、计时收费房等私密直播类型; 8.连麦PK:主播可搜索当前在线主播,发起连麦礼物PK邀请,对方接受邀请后可进行连麦PK; 9.主播守护:直播可充值守护主播,守护时长后台可进行自定义设置,开通守护会有守护礼物; 10.直播红包:主播和用户都可以在直播内发送红包,红包分为普通红包和随机红包; 11.代理推广:单独的代理商和推广员管理后台,可设置三者之的佣金分成方式; 12.引导图功能:后台可上传图片或视频内容作为引导图,视频内容可跳过,点击显示广告内容; 13.数据统计:后台首页显示平台运营数据内容,需申请接入三方数据统计服务; 源码包括;安卓app+苹果app带后台 pc后端管理:thinkphp 安卓:java原生开发 ios:obje-ctive-c开发 源码完整,搭建过于复杂,所以站长没有测试 如果有需要的朋友可以自行下载测试 如果自己没有技术的话不建议自己搭建!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值