阿里百川授权淘宝登录

1.前期准备

登录百川https://baichuan.taobao.com/
点击立即使用

点击创建应用

我们可以看到,创建一个应用很简单,可是它要输入一个app下载地址,这个如果是公司在开发中有下载地址还好,但是对于我们未开发完成就要集成或者是我们只是单纯学习一下登录,这就没得办法了。
在这里我是随便输入了一个自己在github上apk的下载地址,应用就直接创建了。
点击我的产品后台,开通百川电商sdk
下载安全图片

2.环境配置

应用已经创建好了,我们就要考虑sdk的接入了,百川的文档很详细
https://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.7f33be48OcKzFC&treeId=129&articleId=118400&docType=1
在整个项目的gradle基础配置文件中加入仓库地址:(必须要进行配置,不然我们需要的依赖同步不下来)

allprojects {
 repositories {
   jcenter()
       maven {
            url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
        }
    }
}

在项目module的gradle文件中加入相关依赖(文档中提供了几种依赖的导入方式,这种是最简单的)

dependencies { 
 ..... 
 //支付宝(可选) 
 implementation 'com.alipay.android.app.cashier:standardcashier-single:15.6.5@aar'
 compileOnly 'com.alipay.mobile.android.securitysdk:apsecuritysdk-all:3.3.0'
 //登陆 
 implementation 'com.ali.auth.sdk:alibabauth_core:2.0.0.6@aar'
 implementation 'com.ali.auth.sdk:alibabauth_ui:2.0.0.6@aar'
 implementation 'com.ali.auth.sdk:alibabauth_ext:2.0.0.6@aar'
 //安全组件 
 implementation 'com.taobao.android:securityguardaar3:5.4.171@aar'
 implementation 'com.taobao.android:securitybodyaar3:5.4.99@aar'
 implementation 'com.taobao.android:avmpaar3:5.4.36@aar'
 implementation 'com.taobao.android:sgmiddletieraar3:5.4.9@aar'
 //Mtop 
 implementation 'com.taobao.android:mtopsdk_allinone_open:3.1.2.5@jar'
 //applink 
 implementation 'com.alibaba.sdk.android:alibc_link_partner:4.1.15@aar'
 //ut 
 implementation 'com.taobao.android:utdid4all:1.5.2'
 implementation 'com.alibaba.mtl:app-monitor-sdk:2.6.4.5_for_bc'
 // 电商基础组件 
 implementation 'com.alibaba.sdk.android:AlibcTradeCommon:4.0.0.8@aar'
 implementation 'com.alibaba.sdk.android:AlibcTradeBiz:4.0.0.8@aar'
 implementation 'com.alibaba.sdk.android:nb_trade:4.0.0.8@aar'
 implementation 'com.alibaba:fastjson:1.2.41'
 ..... 
}

好了,到这里我们的环境就配置好了,接下来可以进行代码的编写了。

3.代码

//不要忘记在清单文件中配置
public class AliLoginApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        initAlibcTradeSDK();
    }

    private void initAlibcTradeSDK() {
        AlibcTradeSDK.asyncInit(this, new AlibcTradeInitCallback() {
            @Override
            public void onSuccess() {
                Log.d("Tag","百川初始化成功");
            }

            @Override
            public void onFailure(int i, String s) {
                Log.d("Tag","百川初始化失败");
            }
        });
    }
}
 public void getLogin(){
        AlibcLogin alibcLogin=AlibcLogin.getInstance();
        alibcLogin.showLogin(new AlibcLoginCallback() {
            @Override
            public void onSuccess(int i, String s, String s1) {
                Log.d("Tag","登录成功");
                Log.i("Tag", "获取淘宝用户信息: "+AlibcLogin.getInstance().getSession());               
            }

            @Override
            public void onFailure(int i, String s) {
    Log.d("Tag","登录失败");
            }
        });

这里看一下效果


demo传送门
从代码中我们可以看到,我们并没有传递appkey和secret,那么登录的时候是如何判定我们登录的是哪一个应用呢,安全图片,就是因为安全图片我们才可以成功调起来淘宝登录并授权,所以一定不要忘记安全图片。

4.淘宝登录遇到的坑

①错误码123,是因为我们的gradle插件等级太高,我是降级到3.2
②百川初始化失败,这当然是因为安全图片的问题
③登录的时候服务器出错,这是因为没有开通百川电商sdk,就是我们的准备工作没做好
④我们开通了电商sdk,还是报服务器出错,过一会儿就好了

原文地址:https://www.cnblogs.com/dearnotes/p/13278756.html