准备工作
更新时间:2019-06-26 11:09:48
介绍云端调用服务流程,获取云端唯一身份AppKey的示例。
云端服务调用协议
基于安全考虑,所有云端接口的调用仅限于HTTPS方式,不提供HTTP方式的支持。
云端服务调用流程
阿里云IoT云端资源需要云端资源令牌(cloud token)访问。云端资源令牌通过开通云端资源服务获取,令牌的授权以项目(Project)为粒度,不同的project会生成不同的令牌,相互之间不能通用(参考云端资源服务);云端资源服务默认开通。
主要流程如下:
获取云端唯一身份appkey
Java调用示例
// https://github.com/aliyun/iotx-api-gateway-client
public static void main(String[] args) throws UnsupportedEncodingException {
IoTApiClientBuilderParams ioTApiClientBuilderParams =
new IoTApiClientBuilderParams();
ioTApiClientBuilderParams.setAppKey("你的<AppKey>");
ioTApiClientBuilderParams.setAppSecret("你的<AppSecret>");
SyncApiClient syncClient = new SyncApiClient(ioTApiClientBuilderParams);
IoTApiRequest request = new IoTApiRequest();
//设置api的版本
request.setApiVer("1.0.0");
request.setCloudToken("CloudTokenXXXXX");
//设置接口的参数
request.putParam("grantType", "project");
request.putParam("res", "xxxxx");
//请求参数域名、path、request
//host地址 中国站:api.link.aliyun.com 国际站:api-iot.ap-southeast-1.aliyuncs.com
ApiResponse response = syncClient.postBody("api.link.aliyun.com",
"/cloud/token", request, true);
System.out.println( "response code = " + response.getCode()
+ " response = " + new String(response.getBody(), "UTF-8"));
}
PHP调用示例
//https://github.com/aliyun/api-gateway-demo-sign-php (第三方php库)
<?php
include_once 'Util/Autoloader.php';
//host地址 中国站:api.link.aliyun.com 国际站:api-iot.ap-southeast-1.aliyuncs.com
function example() {
$path = "/cloud/token";
$host = "https://api.link.aliyun.com";
$appKey = "你的<AppKey>";
$appSecret = "你的<AppSecret>";
$request = new HttpRequest($host, $path, HttpMethod::POST, $appKey, $appSecret);
//设置api版本和参数
$body = '{"id":"xxx","version":"1.0","request":{"apiVer":"1.0.0"},' .
'"params":{"grantType":"project","res":"xxx"}}';
//设定Content-Type
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_TYPE,
ContentType::CONTENT_TYPE_JSON);
//设定Accept
$request->setHeader(HttpHeader::HTTP_HEADER_ACCEPT,
ContentType::CONTENT_TYPE_JSON);
if (strlen($body) > 0) {
$request->setHeader(HttpHeader::HTTP_HEADER_CONTENT_MD5,
base64_encode(md5($body, true)));
$request->setBodyString($body);
}
//指定参与签名的header
$request->setSignHeader(SystemHeader::X_CA_TIMESTAMP);
$response = HttpClient::execute($request);
var_dump($response);
}
example();