Skip to content

认证授权

zhaohengyu edited this page Sep 29, 2018 · 8 revisions

综述

出于更好的安全性考虑, SDK从5.0版本开始调整了用户认证方式, 并且5.0以下版本SDK使用的用户认证方式将不再做支持.

新的认证方案如下图所示:

认证方案示例图

其中从有赞服务端返回认证信息是一个包含用户登录态信息的JSON, 是完成APP内登录态认证的必要条件.

获取认证信息

需订阅认证事件(AbsAuthEvent)来监听来自SDK内的认证回调, 并编码实现请求三方自有服务端来获取认证数据.

在获取到用户信息后, 需要将数据按要求填充到YouzanToken这个类创建的对象, 然后调用sync方法回传给SDK与WebView来完成认证.

示例代码:

YouzanToken token = new YouzanToken()
token.setAccessToken("接口返回的access_token")
token.setCookieKey("接口返回的cookie_key")
token.setCookieValue("接口返回的cookie_value")

// 注意调用顺序
YouzanSDK.sync(getApplicationContext(), token);
mView.sync(token);

在打开网页触发登录事件时,如果获取认证信息失败或者用户取消登录,关闭登录页面时,需要在上一个页面里面调用webview.syncNot()。代码如下:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (CODE_REQUEST_LOGIN == requestCode) {
            if (resultCode == RESULT_OK) {
                // 登录成功设置token
                
            } else {
                // 登录失败
                view.syncNot();
            }
        } else {
            // 最后,如果事件没有被其他代码处理,就交给webview处理。主要是处理文件选择事件
            view.receiveFile(requestCode, data);
        }
    }

清空登录态

在三方App内发生用户切换用户退出的时, 为了避免出现客户信息混乱, 请务必执行如下代码登出有赞用户角色.

代码示例:

YouzanSDK.userLogout(context);