Git Product home page Git Product logo

androidauth's Introduction

Auth

  • Auth 是一款第三方登陆、分享、支付的快速集成库。
  • 支持平台包括微信、QQ、微博、支付宝、华为、荣耀、小米、银联、GooglePay。
  • 支持 Intent 方式调用 twitter、facebook 等分享。
  • 根据项目需求按需添加对应平台依赖。

配置项目

配置maven仓库

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/'
}

配置微博支持的 SO 架构

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 判断是否成功
}

华为支付流程

  1. 支付前检查是否支持
  2. PMS商品,需要先查询商品列表
  3. 调用支付
  4. 消耗型商品和服务器核对后消耗(服务端也可消耗)

消耗型商品的补单

  1. 购买消耗型商品支付后返回 AuthResult 为 Error,且 code=1001 时
  2. 应用启动时
  3. 调用以下代码查询,根据返回数据进行补单操作,一般数据上传给服务器进行后续操作
  4. 订阅和非消耗型商品也可通过此接口查询记录
Auth.withHW.purchaseHistoryQuery(activity, 0, false)

google 支付

  • 结果返回 Error 时,如果 code=1001、1002 请再次重新尝试购买(连接Google结算库失败,重试次数自定义)

小米支付

  • 小米依赖支付宝 sdk,集成时需要添加支付宝集成;
  • 支付前判断是否登录状态,未登录先调用登录

使用系统分享:更多分享、根据包名调用应用分享

  1. 调用 Auth.withMore()
  2. 需要传参目标应用包名,在清单文件中添加标签,并将目标应用包名加入
  3. 库中已经添加标签,无需再添加的标签:
    <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>

第三方库版本及对应链接

androidauth's People

Contributors

wenjiegithub avatar

Stargazers

endless avatar Luke Wong avatar  avatar

Watchers

 avatar  avatar

Forkers

endless5f

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.