获取应用授权Token

前提条件

  1. 请先完成阿里云账号注册、实名认证、开通安全认证创建应用

  2. 请完成获取阿里云访问密钥

获取应用授权Token

获取应用授权token, 移动端SDK调用接口需要

请求参数

名称

类型

必填

示例值

描述

ApplicationExternalId

String

A0000001

应用外部ID,该字段在创建应用时指定,在应用详情页中查看

MobileExtendParamsJson

String

-

通过调用移动端SDK生成的数据,Base64编码的JSON数据;iOS SDK接入Android SDK接入

MobileExtendParamsJsonSign

String

5724badc40b93c1748803611abd591832e2f029979f0d46f0eeef42360dad5cb

通过调用移动端 SDK生成的应用签名数据,十六进制编码字符串

UserId

String

zhangsan

用户测试ID

XClientIP

String

10.11.100.10

移动端真实IP,建议传递该字段,安全认证服务会基于该字段进行智能安全风控检测

返回数据

名称

类型

示例值

描述

Success

boolean

true

操作结果,true代表成功,false代表失败

Code

String

Operation.Success

状态码。

  • Success=true 时,Code=Operation.Success

  • Success=false 时,Code的值,请参见下方错误码

Message

String

Operation.Success

具体的描述信息,当Success=false时,会给出Code的对应的具体描述信息

RequestId

String

1C0EE50A-B3BB-42FD-AB59-E3FE88976982

请求ID

Data

String

-

操作成功时,Data中的JSON字符串包含access_token字段:

  • access_token:字符串:提供给移动端调用手机号认证、IFAA认证器时使用

操作失败时;Data字段为空

请求示例

请求方式:POST

https://idaas-doraemon.aliyuncs.com/?Action=FetchAccessToken
&Version=2021-05-20
&ApplicationExternalId=A0000001
&MobileExtendParamsJson=eyJhcHBJ...biI6IjEuMCJ9
&MobileExtendParamsJsonSign=5724badc40b...6f0eeef42360dad5cb
&UserId=zhangsan
&<公共请求参数>

正常返回示例 -获取成功

{
  "Code":"Operation.Success",
    "Data":{
      "ExpiresIn":"86399",
      "Scope":"read",
      "AccessToken":"xxxxx",
      "TokenType":"bearer"
    },
  "RequestId":"71A9178E-7D40-5CFE-8441-9C14ECEE6E71",
  "Success":true,
  "Message":"Operation.Success"
}

错误返回示例 - 请求参数中应用ID不存在

{
  "Success": false,
  "Code": "Operation.Failure.Application.ResourceNotExist",
  "Message": "APIInvokeError.ApplicationDoesNotExist",
  "RequestId": "1C0EE50A-B3BB-42FD-AB59-E3FE88976982",
  "Data":null
}

代码示例(Java)

获取应用授权access_token示例代码:

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.idaas_doraemon.model.v20210520.ServiceInvokeRequest;
import com.aliyuncs.idaas_doraemon.model.v20210520.ServiceInvokeResponse;
import com.aliyuncs.profile.DefaultProfile;

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class IDaaSAuthSample {

    /**
     * 使用AK&SK初始化账号Client
     *
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static IAcsClient createClient(String accessKeyId, String accessKeySecret) throws Exception {
      // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        // 此处以把AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您可以根据业务需要,保存到配置文件里。
        // 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
      	String accessKeyId = System.getenv("ACCESS_KEY_ID");
        String accessKeySecret = System.getenv("ACCESS_KEY_SECRET");
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",
                accessKeyId,
                accessKeySecret);
        // addEndpoint
        DefaultProfile.addEndpoint("cn-hangzhou",
                "idaas-doraemon",
                "idaas-doraemon.aliyuncs.com");
        // 访问的域名
        return new DefaultAcsClient(profile);
    }

    public static void main(String[] args_) throws Exception {
        // 获取token
        fetchAccessToken();
    }

    public static void fetchAccessToken() throws Exception {
       IAcsClient client = IDaaSAuthSample.createClient("Your AccessKey", "Your AccessSecret");
       //获取应用授权token
       FetchAccessTokenRequest request = new FetchAccessTokenRequest();
       request.setApplicationExternalId("testApplication");
       request.setMobileExtendParamsJson("eyJhcHBJZCI6....YXBwT1MiOiJpT1Mi");
       request.setMobileExtendParamsJsonSign("ba6f5596f00102cb1a7d971f8390b7ccb28e6bc4e8694d051f9299ccc69e1186");
       request.setUserId("zhangsan");
       // 复制代码运行请自行打印 API 的返回值
       try {
           FetchAccessTokenResponse response = client.getAcsResponse(request);
           System.out.println(response.getData());
       } catch (Exception e) {
            //根据e,getCode()判断异常原因
            System.out.println(e);
       }
    }
}

示例代码的maven依赖

  <dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>aliyun-java-sdk-idaas-doraemon</artifactId>
   <version>1.2.4</version>
  </dependency>
<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>aliyun-java-sdk-core</artifactId>
   <optional>true</optional>
   <version>[4.4.9,5.0.0)</version>
  </dependency>