Auth 是一款第三方登陆、分享、支付的快速集成库。
支持平台包括微信、QQ、微博、支付宝、华为、荣耀、小米、银联、GooglePay。
支持 Intent 方式调用 twitter、facebook 等分享。
根据项目需求按需添加对应平台依赖。
maven { url ' https://jitpack.io' } // jitpack仓库
maven { url ' https://developer.huawei.com/repo/' } // 华为仓库
maven { url ' https://developer.hihonor.com/repo' } // 荣耀仓库
maven { url ' https://maven.aliyun.com/repository/google' } // 小米有些库需要jcenter
maven { url ' https://maven.aliyun.com/repository/public' } // 小米有些库需要jcenter
maven { // 小米仓库
credentials {
username ' 5f45c9022d5925c55bc00c6f'
password ' NQwPJAa42nlV'
}
url ' https://packages.aliyun.com/maven/repository/2028284-release-awMPKn/'
}
ndk { abiFilters ' armeabi' , ' armeabi-v7a' , ' arm64-v8a' }
implementation ' androidx.appcompat:appcompat:1.x.x'
def auth_version = " 0.9.6"
implementation " cn.moltres.android:auth:$auth_version "
implementation " cn.moltres.android:auth_qq:$auth_version "
implementation " cn.moltres.android:auth_wb:$auth_version "
implementation " cn.moltres.android:auth_wx:$auth_version "
implementation " cn.moltres.android:auth_zfb:$auth_version "
implementation " cn.moltres.android:auth_yl:$auth_version "
implementation " cn.moltres.android:auth_hw:$auth_version "
implementation " cn.moltres.android:auth_xm:$auth_version "
implementation " cn.moltres.android:auth_ry:$auth_version "
implementation " cn.moltres.android:auth_google:$auth_version "
app build.gradle 中配置相应平台参数
必填, 可为空字符串用代码替换,未依赖平台可忽略, 也可在代码中配置(会替换 Manifest 中的值)
manifestPlaceholders = [
// 微博 (可代码配置)
WBAppKey :" " ,
WBScope :" " ,
WBRedirectUrl :" " ,
// 微信 (可代码配置)
WXAppId :" " ,
// QQ Authorities 为 Manifest 文件中注册 FileProvider 时设置的 authorities 属性值
QQAppId :" xxx" ,
QQAuthorities :" xxx" ,
// 支付宝
ZFBScheme :" xxx" ,
// 小米 (可代码配置)
XMAppId :" " ,
XMAppKey :" " ,
// 华为 (可代码配置, agconnect-services.json 不包含密钥时使用的参数, 包含无需配置, 由于华为sdk内部写死文件名配置, 所以文件名不可修改)
// 因为华为配置文件名不可修改, 如果需要线上、测试多类型打包, 可选择使用项目组件化方式构建项目, 参考 ComponentBus 项目
HWPublicKey :" " , // 验签用公钥, 支付时使用, 也可通过方法参数的方式使用
HWCpId :" " ,
HWAppId :" " ,
HWApiKey :" " ,
HWClientID :" " ,
HWProductId :" " ,
HWClientSecret :" " ,
// 荣耀
RYAppId :" xxx" ,
RYCpId :" xxx"
]
集成华为 SDK 时需要配置 json 文件,json 文件来自华为
assets 中添加 agconnect-services.json 文件
Auth .init (application)
Auth .logCallback = { str ->
// 配置输出日志
}
// 微信 manifest 中配置过 WXAppId, 不用再此配置
Auth .wxAppId = " AppId"
// 微博 manifest 中配置过, 不用再此配置
Auth .wbAppKey = " AppKey"
Auth .wbUrl = " Url"
Auth .wbScope = " Scope"
// 小米 manifest 中配置过, 不用再此配置
Auth .xmAppId = " AppId"
Auth .xmAppKey = " AppKey"
// 华为 manifest 中配置过, 不用再此配置. agconnect-services.json 不包含密钥时使用的参数, 包含无需配置
Auth .hwPublicKey = " key"
Auth .hwCpId = " CpId"
Auth .hwAppId = " AppId"
Auth .hwApiKey = " ApiKey"
Auth .hwClientID = " ClientID"
Auth .hwProductId = " ProductId"
Auth .hwClientSecret = " ClientSecret"
// 微信
Auth .withWX().registerCallback { } // 注册回调 微信请求数据会在此回调内,按需解析数据
// 微博(可选)
Auth .withWB() // 微博是异步初始化, 避免调用时初始化出现未初始化完成的问题, 所以提前调用一下, 初始化SDK (库内使用方式是延迟初始化, 第一次调用才做初始化)
// 华为
Auth .withHW()
// 小米
Auth .withXM()
应用打开主页时调用,华为、小米需要(根据联运要求)
Auth .withHW().onActivityCreate(activity)
Auth .withXM().onActivityCreate(activity)
Auth .withXM().onActivityDestroy()
登陆、分享功能,注意调用的如果是 suspend 函数需要在携程内调用
lifecycleScope.launch {
val loginResult = Auth .withWX().login()
val shareLinkResult = Auth .withWX().shareLink(" http://www.baidu.com" )
// 根据 result 判断是否成功
}
支付前检查是否支持
PMS商品,需要先查询商品列表
调用支付
消耗型商品和服务器核对后消耗(服务端也可消耗)
购买消耗型商品支付后返回 AuthResult 为 Error,且 code=1001 时
应用启动时
调用以下代码查询,根据返回数据进行补单操作,一般数据上传给服务器进行后续操作
订阅和非消耗型商品也可通过此接口查询记录
Auth .withHW.purchaseHistoryQuery(activity, 0 , false )
结果返回 Error 时,如果 code=1001、1002 请再次重新尝试购买(连接Google结算库失败,重试次数自定义)
小米依赖支付宝 sdk,集成时需要添加支付宝集成;
支付前判断是否登录状态,未登录先调用登录
调用 Auth.withMore()
需要传参目标应用包名,在清单文件中添加标签,并将目标应用包名加入
库中已经添加标签,无需再添加的标签:
<queries >
<package android : name =" com.twitter.android" />
<package android : name =" com.whatsapp" />
<package android : name =" com.linkedin.android" />
<package android : name =" com.instagram.android" />
<package android : name =" com.facebook.katana" />
</queries >