前提条件
获取应用授权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 | 状态码。
|
Message | String | Operation.Success | 具体的描述信息,当Success=false时,会给出Code的对应的具体描述信息 |
RequestId | String | 1C0EE50A-B3BB-42FD-AB59-E3FE88976982 | 请求ID |
Data | String | - | 操作成功时,Data中的JSON字符串包含access_token字段:
操作失败时;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>