文档中心 > YunOS开放平台

YunOS帐号授权接入文档

更新时间:2017/05/18 访问次数:11051

YunOS帐号授权

开发者可以通过YunOS帐号授权机制,来获取用户基本信息,进而实现业务逻辑。

 

一、引入SDK

可以与开放平台SDK整体使用,也可以单独集成openauthsdk-1.x.x.jar编译使用。

必须要在你的Manifest文件中声明如下权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

 

二、客户端接口

2.1 概述

帐号SDK主要是提供YunOS帐号授权登录功能。

开发者App接入该SDK后,可以使用YunOS系统帐号授权Service完成授权登录。授权成功后,则返回当前YunOS帐号的授权码、用户ID等信息。使用AuthClient类对外提供授权接口。

根据应用可获取帐号信息的级别,授权分为两类。具体可使用的授权级别,需要App在申请SDK时一次性确认的,且后续不可变更。

  1. 用户级授权App,授权过程不会影响系统登录态,也不涉及核身逻辑;
  2. 会话级授权App,授权过程可以影响系统登录态。

所有的接口调用会在IYunOSAuthCallBack对象中回调,回调触发在主线程,业务方若在回调后需要做网络请求等耗时操作,请务必创建线程处理。

 

2.2 接口说明

开发者可以使用AuthClient.getInstance(this.getApplicationContext(), appKey)创建AuthClient实例进行接口调用。

考虑开发者在授权登录页面的横屏需求,在创建AuthClient实例时增加了横屏传参;但由于各个手机系统版本的兼容性有差异,有些版本上横屏支持存在问题,即便是传了横屏参数,也只能竖屏显示。

AuthClient.getInstance(this.getApplicationContext(), appKey, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

 

2.2.1 authorize接口

1、接口描述

授权接口,可以使用当前系统帐号授权,也可以使用切换帐号授权(为用户级授权App提供,如游戏应用中切换小号)。

支持旧版本YunOS系统的兼容模式,但只能使用淘宝账号授权,且无法切换帐号。

授权成功后,解析返回的authorizeCode,可调用服务端开放接口open.apply_auth_token_by_authcode,获取AccessToken。

返回格式如下:

{"appKey":"e0b476b3adf21533d272c2de5e8466d8","uid":"9544B83DE5BA9D70A6DD62546F5AA96B6E2087913A671FFEE06C1F7D4473C4E5","userInfo":{},"authorizeCode ":"fQEOCv4bR-iQJJfXX2mqzQ"}

2、前置条件

AlibabaSDK异步初始化成功后使用。

3、函数原型

public void authorize(Activity activity, int requestCode,final boolean forceLogin,final boolean forceUpdate, final IYunOSAuthCallBack callBack)

4、参数说明

参数

参数说明

参数要求

activity

当前调用Activity

必选

requestCode

兼容老版本SDK使用,SDK中会startActivityForResult,必须>0

必选

forceLogin

True表示使用切换帐号模式,不使用当前系统帐号授权

可选,默认false

forceUpdate

True表示不使用兼容模式,不使用淘宝帐号授权,必须使用YunOS帐号授权

可选,默认false

callBack

回调对象

必选

5、代码使用范例

AuthClient.getInstance(activity.getApplicationContext(), appKey).authorize(activity, 1, forceLogin, forceUpdate, new IYunOSAuthCallBack() {

                    @Override

                    public void onComplete(String data) {

                        Toast.makeText(activity, "authorize onComplete---" + data, Toast.LENGTH_LONG).show();

                    }

                    @Override

                    public void onError(int error, String msg) {

                        Toast.makeText(activity, "authorize error: " + error + "; error msg "+ msg, Toast.LENGTH_LONG).show();

                    }

                });

6、异常及错误码

开发者在服务端配置正确的应用信息,在用户授权过程中,除了用户取消外,一般都会授权成功回调onComplete函数。

错误码

含义

-1

用户取消授权(老系统帐号版本)

-2

系统授权服务绑定失败

-3

无网络

202

系统需要升级才能支持请求的授权服务

10105

用户取消授权(新系统帐号版本)

6、注意事项

为兼容旧版系统的startActivityForResult授权方式,需要开发者重写Activity的onActivityResult方法,如下:

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

        AuthClient.getInstance(this, appkey).authorizeCallBack(requestCode, resultCode, data);

}

 

2.2.2 getAccountInfo接口

1、接口描述

获取已经授权成功的帐号信息,返回用户ID 及其他帐号信息。

2、前置条件

已经成功调用过authorize接口。

3、函数原型

public void getAccountInfo(final IYunOSAuthCallBack callBack)

4、代码使用范例

 AuthClient.getInstance(activity.getApplicationContext(), appKey).getAccountInfo(new IYunOSAuthCallBack() {

                    @Override

                    public void onComplete(final String accountInfo) {

                        Toast.makeText(activity, "accountInfo: " + accountInfo, Toast.LENGTH_SHORT).show();

                    }

                    @Override

                    public void onError(int error, String msg) {

                        Toast.makeText(activity, "getAccountInfo error: " + error + "; error msg "+ msg, Toast.LENGTH_SHORT).show();

                    }

                });

 

2.2.3 getAnonymousYunID接口

1、接口说明

获取匿名YunID。

2、函数原型

public void getAnonymousYunID(final IYunOSAuthCallBack callBack)

3、代码使用范例

AuthClient.getInstance(activity.getApplicationContext(), appKey).getAnonymousYunID(new IYunOSAuthCallBack() {

                    @Override

                    public void onComplete(final String yunID) {

                        Toast.makeText(activity, "yunID: " + yunID, Toast.LENGTH_SHORT).show();

                    }

                    @Override

                    public void onError(int error, String msg) {

                        Toast.makeText(activity, "getAnonymousYunID error: " + error + "; error msg "+ msg, Toast.LENGTH_SHORT).show();

                    }

                });

三、服务端接口

3.1 开发前准备

1、请确认已在open.yunos.com申请应用并获得“YunOS-账号授权API”权限包

2、在open.yunos.com应用管理页面生成服务端SDK

3、java、maven运行环境,tomcat等应用容器

3.2 如何运行

1、将服务端SDK重命名为taobao-sdk-java.jar并放到lib目录下

2、替换DemoController.java文件中变量:

  • AUTH_SIGN:您的APP的签名文件的MD5值
  • APP_KEY :在open.yunos.com上申请的appKey
  • APP_SECRET:在open.yunos.com上申请的appSecret

3、运行根目录package.bat文件,或在根目录执行mvn clean package命令,在target目录下生成war包

4、使用应用容器运行war包

3.3 服务端API调用方法


private YunosAccountCallapiResponse callApi(String api, String params, String version) throws ApiException {
// 拼装请求参数
YunosAccountCallapiRequest apiRequest = new YunosAccountCallapiRequest();
apiRequest.setApi(api);
apiRequest.setVersion(version);
apiRequest.setTimeStamp(String.valueOf(System.currentTimeMillis() / 1000));
apiRequest.setAuthSign(AUTH_SIGN);
apiRequest.setParams(params);

// 请求API
DefaultTaobaoClient client = new DefaultTaobaoClient(SERVICE_URL, APP_KEY, APP_SECRET);
YunosAccountCallapiResponse apiResponse = client.execute(apiRequest);
return apiResponse;
}

3.4 数据格式

3.4.1 YunosAccountCallapiResuest参数介绍

  • api:调用接口名称
  • version:接口版本号
  • timeStamp:当前系统时间戳,以秒为单位
  • authSign:您的APP的签名文件的MD5值
  • params:api参数,json格式

3.4.2 YunosAccountCallapiResponse方法介绍

  • String getErrorCode() :获取调用接口错误码(调用成功时为null)
  • String getMsg() :获取调用接口错误信息(调用成功时为null)
  • AccountResult getResult() :获取调用api返回信息

3.4.3 AccountResult参数介绍

  • status: api调用结果码,具体含义见API接口介绍中错误码解释
  • message: api调用结果信息
  • data: api调用结果,json格式

3.5 接口说明

3.5.1 open.apply_auth_token_by_authcode

1、接口描述

通过应用授权authCode获取应用授权token

2、参数定义

 

参数名

参数描述

入参

authCode

应用授权authCode

 

clientAppKey

开放平台颁发的appKey

 

authSign

您的APP的签名文件的MD5值

出参

authToken

应用授权token

 

uid

用户唯一ID

 

userInfo

账号其他信息(displayName等)

3、错误码定义

错误码

错误信息

含义

50001

SYS_INVALID_PARAMS

参数错误

50005

AUTH_SIGN_ERROR

authSign非法

60001

APP_NOT_EXIST

appkey不存在

75004

OAUTH_CODE_ERROR

验证authcode失败

86004

INVALID_APP_KEY

生成authCode时的appkey与本次请求不一致

80014

GET_TOKEN_BY_AUTHCODE_ERROR

生成authToken失败

500

SYS_ERROR

系统异常 

3.5.2 open.get_user_by_access_token

1、接口描述

通过accessToken获取用户信息

2、参数定义

 

参数名

参数描述

入参

accessToken

YunOS token

出参

displayName

用户名

 

userId

用户唯一ID

3、错误码定义

错误码

错误信息

含义

50001

SYS_INVALID_PARAMS

参数错误

75001

ACCESS_TOKEN_ERROR

无效的token

500

SYS_ERROR

系统异常

3.5.3 open.refresh_access_token

1、接口描述

通过refreshToken刷新accessToken

2、参数定义

 

参数名

参数描述

入参

refreshToken

用于刷新accessToken的refreshToken

出参

accessToken

YunOS token

 

expireIn

accessToken有效时间,默认为7天

 

refreshToken

刷新accessToken用的token,accessToken失效后可用来刷新accessToken

 

reExpireIn

refreshToken有效时间,默认为90天

 

displayName

用户名

 

userId

用户唯一ID

3、错误码定义

错误码

错误信息

含义

50001

SYS_INVALID_PARAMS

参数错误

75006

INVALIDATE_TOKEN_ERROR

refreshToken格式错误

75001

ACCESS_TOKEN_ERROR

refreshToken未找到

75002

REFRESH_TOKEN_ERROR

刷新accessToken失败

75007

YUNOS_TOKEN_SERVER_ERROR

刷新accessToken失败

500

SYS_ERROR

系统异常 

3.5.4 open.get_user_by_auth_token

1、接口描述

通过应用授权token获取uid和用户信息

2、参数定义

 

参数名

参数描述

入参

authToken

应用授权token

 

clientAppKey

开放平台颁发的appKey

 

authSign

您的APP的签名文件的MD5值

出参

uid

用户唯一ID

 

userInfo

账号其他信息(displayName等)

3、错误码定义

错误码

错误信息

含义

50001

SYS_INVALID_PARAMS

参数错误

50005

AUTH_SIGN_ERROR

authSign非法

60001

APP_NOT_EXIST

appkey不存在

75004

OAUTH_CODE_ERROR

验证authcode失败

86005

AUTH_TOKEN_ERROR

authToken非法

86006

AUTH_TOKEN_APPKEY_NOT_EQUAL

appKey与请求生成的authToken时不一致

86009

AUTH_TOKEN_NOT_EXIST

authToken不存在或已过期,此时客户端需要清掉保存的token,重新走授权

500

SYS_ERROR

系统异常

3.5.5 open.get_anonymous_yunid

1、接口描述

通过设备硬件信息产生YunID,表示匿名用户ID(预留接口,暂时返回null)

2、参数定义

 

参数名

参数描述

入参

clientAppKey

开放平台颁发的appKey

 

authSign

您的APP的签名文件的MD5值

出参

yunId

匿名用户ID

3、错误码定义

错误码

错误信息

含义

50001

SYS_INVALID_PARAMS

参数错误

60001

APP_NOT_EXIST

appkey不存在

86007

GET_YUN_ID_ERROR

生成YunID失败

500

SYS_ERROR

系统异常

FAQ

关于此文档暂时还没有FAQ
返回
顶部