Unity接入越南社交软件Zalo登录(Android)之SDK接入

2023-11-06

Zalo登录

注册前的准备工作
由于国内网络无法直接打开Zalo页面,因此需要一个较稳定的VPN。
创建开发者账号
登录Zalo开发者后台
可以在网页最底部把网页设置为英文
在这里插入图片描述

创建自己的应用
1.点击右上角【创建应用】
在这里插入图片描述
2.创建好应用后记录Application ID和Application secret key 并点击Log in
在这里插入图片描述

3.点击Android,填写Package name(unity包名)、Hash key。
如何获取Hashkey,他这里是需要SHA1,我们可以通过:
1、win+R 打开cmd命令窗口
2、输入命令:keytool -list -v -keystore jks路径地址
3、输入密钥口令
在这里插入图片描述
4.得到以下信息
在这里插入图片描述

AndroidStudio添加ZaloSDK

1.添加ZaloSDK库以构建gradle
build.gradle文件中添加以下依赖项:
implementation “com.zing.zalo.zalosdk:core:2.6.0329@aar”
implementation “com.zing.zalo.zalosdk:auth:2.6.0329@aar” implementation"com.zing.zalo.zalosdk:openapi:2.6.0329@aar"
:添加@aar是因为AndroidX和Android support有冲突
报错为:

Duplicate class android.support.v4.os.ResultReceiver$MyRunnable found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class androidx.core.graphics.drawable.IconCompatParcelizer found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class androidx.core.internal.package-info found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class androidx.versionedparcelable.CustomVersionedParcelable found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.NonParcelField found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.ParcelField found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.ParcelImpl found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.ParcelImpl$1 found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.ParcelUtils found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcel found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcel$1 found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcel$ParcelException found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelParcel found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelStream found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelStream$FieldBuffer found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelStream$InputBuffer found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelable found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelize found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)

2.AndroidManifest.xml中添加appID
首先先创建一个string.xml

在这里插入图片描述
在string.xml里面添加

<string name="appID"> appID(之前获取的Application ID)</string>

然后在AndroidManifest.xml中添加

<!-- Required zalo app id -->
 <meta-data
      android:name="com.zing.zalo.zalosdk.appID"
      android:value="@string/appID" />

:需要根据上述说明添加AppID的strings.xml,不能直接在metaData标签中分配appID字符串将导致ZaloSDK无法识别appID错误。

3.在AndroidManifest文件中,添加“应用程序名称”属性

<application android:name="com.zing.zalo.zalosdk.oauth.ZaloSDKApplication" />

如果应用程序具有其自己的Application类,则应用程序的onCreate方法必须调用

public class DemoApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ZaloSDKApplication.wrap(this);
    }
}

4.在AndroidManifest文件中,添加activity

<activity
    android:name="com.zing.zalo.zalosdk.oauth.BrowserLoginActivity">
    <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="zalo-appID(之前获取的Application ID)" />
    </intent-filter>
</activity>

5.为zaloSDK添加proguard

-keep class com.zing.zalo.**{ *; }
-keep enum com.zing.zalo.**{ *; }
-keep interface com.zing.zalo.**{ *; }

注:上述步骤都做完后,可能会有报错,如

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add ‘tools:replace=“android:appComponentFactory”’ to element at AndroidManifest.xml:6:5-26:19 to override.

解决方法:
在AndroidManifest.xml里添加

tools:replace="android:appComponentFactory"
        android:appComponentFactory=""

在这里插入图片描述

Zalo登录
1.Zalo授权API

ZaloSDK.Instance.authenticate(Activity, OAuthCompleteListener) //default: LoginVia.APP
ZaloSDK.Instance.authenticate(Activity, LoginVia, OAuthCompleteListener)

LoginVia 有三种登录选项:
LoginVia.APP---------------ZaloApp登录
LoginVia.WEB--------------Zalo网页登录
LoginVia.APP_OR_WEB---------------优先App登录,如果设备没安装App则使用Web登录

OauthCompleteListener获取登录结果:

OAuthCompleteListener listener = new OAuthCompleteListener() {
    @Override
    public void onAuthenError(int errorCode, String message) {
        //授权失败
    }
 
    @Override
    public void onGetOAuthComplete(OauthResponse response) {
        String code = response.getOauthCode()
         //授权成功
    }
};

2.重写onActivityResult

protected void onActivityResult(int reqCode, int resCode, Intent d) {
   super.onActivityResult(requestCode, resultCode, data);
   ZaloSDK.Instance.onActivityResult(this, reqCode, resCode, d);
}

在这里插入图片描述
如需获取用户信息,获取用户信息

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity接入越南社交软件Zalo登录(Android)之SDK接入 的相关文章

  • Honeycomb Android 模拟器太慢了 - 在正式发布之前它会变得可以管理吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 用于色彩空间转换的 IMTransform 视频处理器的设置

    我正在尝试使用视频处理器 MFT 进行一些基本的色彩空间转换 我的相机本身支持 NV12 我需要 RGB24 来编写一些着色器 以提供类似卡通的效果 下面是用于执行 MF 的 Media 类的定义 class Media public IM
  • 在 Flex SDK 上叠加 AIR SDK 后出现问题

    我尝试在 Windows 计算机上将 AIR SDK 覆盖到 Flex SDK 上 但之后遇到问题 我尝试覆盖两个 SDK 的多个官方版本 包括 Apache Flex SDK 并按照此处提到的步骤进行操作 http helpx adobe
  • 如何将我的应用程序的目标 API 级别从 23 更改为 26

    当我尝试将我的应用程序上传到 Google Play 控制台时遇到问题 API 级别必须为 26 而我的应用程序刚刚使用 23 版本开发 现在我不知道如何从 23 更改此 API 版本到 26 使其正常工作 请帮帮我 Steps Go to
  • QuickBlox:arm64 架构的未定义符号

    我使用 Xcode 6 4 并使用 cocoapods 安装了 QuickBlox 框架 使用该框架后 我收到一些错误 例如 Undefined symbols for architecture arm64 OBJC CLASS QBSet
  • 我无法运行我的 flutter 应用程序。它说 Flutter 需要 Android SDK 28,而我有 sdk 28

    当我运行 flutter doctor 时 它显示以下错误 Running flutter doctor Doctor summary to see all details run flutter doctor v Flutter Chan
  • Android SDK 管理器不工作

    启动 Eclipse 时我收到一条消息 This version of ADT requires Android SDK Tools revision 21 0 0 rc9 or above Current version is 10 0
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • EPi服务器开发

    除了 Episerver com 之外 使用EPiServer开发的人还使用哪些其他网站作为开发资源 一直在使用 coderesort com 但我发现它缺乏如何做事的示例 非常感谢 J 我用于EPiServer开发的通用资源 EPi服务器
  • 删除Android webview左右边距

    我正在开发一个 webview 应用程序 我的问题是左右两侧有空白 我是初学者 我不知道如何删除它们 请帮忙 注意 请在您的答案中具体说明 例如 将此代码添加到名为布局的 java 框中的全屏内容中 预先非常感谢 这是代码 1 布局 全屏活
  • 双击并滑动/拖动手指以放大/缩小

    如果有人使用过 iOS 版谷歌地图应用程序 那么它有一个很棒的功能 可以用一根手指放大 缩小 双击 uiscrollview 然后立即向上或向下滑动手指以放大 缩小 有谁知道这是如何实现的 谷歌发布了任何片段吗 我将此功能添加到我的 UIS
  • 如何使用Google API PHP SDK获取用户信息

    我正在尝试为拥有 Google 帐户的用户添加登录选项到我的网站 我已经能够实现这个 Facebook 但在使用 Google 获取用户帐户信息时遇到问题 我正在使用位于此处的 Google PHP SDK https github com
  • 从现在起测量时间间隔

    任何人都知道或可以提供一些与 timeIntervalSinceNow 方法相关的示例代码 我需要类似的东西 time2 当应用程序进入前台时 time1 当应用程序进入后台时 time3 时间差 这样我就可以使用这个数字 以秒为单位的首选
  • Facebook oauth/access_token 丢失

    不知道我是否错过了什么 但就这样 我正在尝试为我的应用程序获取 access token 以便它可以在 facebook 上查找某些公共群组的事件 而无需用户登录 我试图从中获取 access token 这将返回一个字符串 access
  • 无法使用 android.support.v7.widget.AppCompatTextView 实例化以下类

    最近我在 android studio 的应用程序中将我的 sdk 从 25 更改为 26 我在所有 xml 中都遇到了这个奇怪的错误 目前 该错误并没有以我能看到的任何方式影响我的应用程序 但每次我必须编辑或更改 xml 中的某些内容时
  • Windows 10 中的 gacutil.exe 在哪里?

    我有Windows 10 专业版 64 位 微软视觉工作室 2015和完整的 Windows 10 SDK 包 but 我找不到 gacutil exe in Microsoft Visual Studio 2015 子目录 Windows
  • Android studio SDK 管理器丢失

    我正在关注这个离子教程 https ionicacademy com get started with ionic 在 Android Studio 中设置 SDK 来测试我的 ionic 项目时遇到了一些问题 我正在寻找 SDK 管理器
  • eclipse中更新ADT后出错

    我的 eclipse 中 ADT 的最新版本是 API 16 所以我更新了 ADT eclipse gt Help gt Install new software gt Work with ADT 然后发生了多个错误 我什至无法打开 And
  • 如果应用程序意外关闭,如何重新启动应用程序

    Skype 更新文本 http www iclarified com entry index php enid 21659包含下一个 如果意外关闭 应用程序会自动重新启动 如何通过 SDK 执行此操作 据我所知 某些类型的应用程序可以在后台
  • Google Cloud SDK 无法安装“.exe;.bat;.com”不是可识别的命令

    我正在尝试在 Windows 10 笔记本电脑上安装 google cloud SDK 我尝试删除安装文件夹中的空格 并将路径添加到我的环境变量中 完整的错误是 Output folder C Users user Documents Do

随机推荐

  • 第十三届蓝桥杯Python 大学B组真题详解

    第十三届蓝桥杯Python B组真题详解 试题A 排列字母 试题B 寻找整数 试题C 纸张尺寸 试题D 位数排序 试题E 蜂巢 试题F 消除游戏 试题G 全排列的价值 试题H 技能升级 试题I 最长不下降子序列 最优清零方案 本届比赛 两道
  • 性能测试调优模型、思想和技术

    最近阅读 软件性能测试 分析与调优实践之路 一书 个人认为性能调优章节为整部书的精华 该章节包括了性能测试调优模型 调优思想和调优技术 下面是摘抄整理自书中内容 调优模型 下图为互联网中常见的用户请求的分层转发和处理的过程 在性能调优时就是
  • 5.5 综合案例1.0-电力采集

    综合案例 电力采集 1 简介 1 1 BL0939芯片 1 2 语音合成 1 3 注意事项 2 阿里云端设置 3 测试代码 main py app relay py app led py app elec py app audio py a
  • MySQL表的约束

    目录 约束 概念 分类 非空约束 not null 唯一约束 unique 主键约束 primary key 外键约束 foreign key 继续使用上篇文章https blog csdn net z714405489 article d
  • 94-----JS基础-----dom查询

    一 代码 同样很简单 但是下面的接口会比较常用 用到时具体看一下即可 主要是三个接口 1 document getElementById 2 document getElementsByTagName 3 document getEleme
  • (附源码)springboot学生宿舍管理系统 毕业设计 211955

    摘 要 科技进步的飞速发展引起人们日常生活的巨大变化 电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用 信息时代的到来已成为不可阻挡的时尚潮流 人类发展的历史正进入一个新时代 在现实运用中 应用软件的工作规则和开发步
  • Loguru 源码中如何sink参数是日志路径时,rotation不能精确到天

    当我们把日志一直不停写入某个文件中 那么这个文件可能会有几十上百 GB 显然这样是没有办法查看和检索的 所以我们需要一些方式来切分日志 例如 每个日志文件只有1GB 超过1GB 后 自动生成新的日志 又或者每天0点自动生成新的日志 当日志按
  • ROS与Arduino:Arduino IDE的配置安装+实现简单串口通讯

    rosserial arduino包可让ROS和ArduinoIDE一起工作 rosserial提供的ROS通讯协议工作在Arduino的UART上 它让Arduino成为标准的ROS节点 可以发布和订阅ROS消息 发布TF转换 获取ROS
  • WIN 10找不到IE浏览器&打不开IE浏览器&用户名自带“域”,怎么办?

    前言 因客户侧系统依赖安装VPN才能访问 客户发的证书安装文档 又依赖IE浏览器下进行 也试过其他浏览器总是卡在提交证书申请前的信息加载 所以开始找本机的IE浏览器 然而遇到的情况是这样的 1 总是跳转到Microsoft Edge 在这个
  • nuxt打包路劲问题_Nuxt最简入门,让vue项目快速被搜索引擎收录

    Nuxt js是vue js的通用框架 最常用的就是作ssr 一般的vue cli不利于搜索引擎的seo操作 但是nuxt很好的解决了这一大问题 Nuxt的优点 基于 Vue js 自动代码分层 服务端渲染 强大的路由功能 支持异步数据 静
  • Stream按对象某属性去重的方案

    1 Collectors collectingAndThen 这是Stream中的一个收集器 相比普通的Collectors toList Collectors groupingBy等收集器 Collectors collectingAnd
  • 从外部访问本机vmware虚拟机的方法

    转载 https www csdn net tags MtTaEgzsMzI0NTYwLWJsb2cO0O0O html 从外部访问本机vmware虚拟机的方法 2021 10 19 11 39 23 环境情况 本地 操作系统为window
  • Windows 11配置WSL及Linux子系统安装

    说明 在Windows系统中 一般使用Linux子系统是通过安装虚拟机的方法 再使用虚拟机安装Linux子系统 常用的虚拟机软件有VMware Workstation等 但是该软件是收费软件 在企业开发时需要支付授权费用 Windows 1
  • 曲面细分着色器(Tessellation)

    图形渲染流水线如下 1 顶点着色器 version 410 core void main void const vec4 vertices vec4 vec4 0 25
  • 【SWT】多层 Composite 嵌套,如何使得 最内层的 Composite 发出的事件传到最外层?

    SWT 事件传递原理 在 SWT 中 事件传递是通过控件树的层级关系自动完成的 而不需要手动控制事件的传递顺序 当一个控件产生事件时 事件会自动向上传递到其父级控件 然后继续向上层传递 直至到达顶层的 Shell 控件 这意味着 事件将按照
  • python 使用线程接收串口数据,并同时可进行串口数据发送。提供python 串口通讯助手的源码下载

    有关python 串口通讯助手的源码下载 请打开这篇文章 https blog csdn net xiaoeleis article details 105820455 python 使用线程接收串口数据 并同时可进行串口数据发送 问题 1
  • VM VirtualBox运行Ubuntu系统卡顿提速(亲测有效,附图)

    VirtualBox运行Ubuntu系统卡顿提速 亲测有效 附图 亲测有效 卡顿明显减少 欣喜之余 记录备忘 原文教程见下方链接 原文没有图 我把自己操作时的截图放在下面 原文 VirtualBox虚拟机运行Ubuntu如何不卡 记得要把U
  • slam数学基础——最小二乘

    一 前言 1 最小二乘是一类特殊形式的最优化求解问题 相比于其他优化问题 求解方式比较简洁 2 最小二乘被广泛应用于各种实际问题的建模 在求解实际工程问题中有着广泛的应用 例如 slam 中随处可见最小二乘的声影 二 线性最小二乘法 1 预
  • SlideLive:支持图表类PPT模板下载

    简介 在学习和工作中 我们经常需要制作图表类型的PPT SlideLive是一款PPT在线播放和分享的网站 该网站已收录大量的PPT模板 本文主要介绍如何从SlideLive平台下载图表类型PPT模板 下载地址 图表类型模板 SlideLi
  • Unity接入越南社交软件Zalo登录(Android)之SDK接入

    Zalo登录 注册前的准备工作 由于国内网络无法直接打开Zalo页面 因此需要一个较稳定的VPN 创建开发者账号 登录Zalo开发者后台 可以在网页最底部把网页设置为英文 创建自己的应用 1 点击右上角 创建应用 2 创建好应用后记录App