Token akses adalah kredensial yang digunakan untuk memanggil layanan Intelligent Speech Interaction. Dokumen ini menjelaskan cara memperoleh token akses.
Prasyarat
ID AccessKey dan Rahasia AccessKey akun Anda harus sudah diperoleh. Untuk informasi lebih lanjut, lihat Aktifkan Intelligent Speech Interaction.
Anda dapat menggunakan Alibaba Cloud SDK untuk meminta token akses dari cloud. Saat mengirim permintaan ini, Anda harus menyediakan ID AccessKey dan Rahasia AccessKey akun Alibaba Cloud Anda. Selain itu, Anda juga dapat mengirim permintaan token ke server dari klien untuk mendapatkan token akses. Untuk informasi lebih lanjut, lihat Kirim Permintaan HTTP atau HTTPS untuk Memperoleh Token Akses.
Sebelum menggunakan token akses, periksa parameter ExpireTime untuk memastikan timestamp yang menunjukkan periode validitas token. Jika token kedaluwarsa, Anda harus memperoleh token baru.
Prosedur
Masuk ke Konsol Intelligent Speech Interaction.
Di halaman Gambaran Umum, klik Obtain AccessToken di pojok kanan atas.
Anda dapat menggunakan SDK untuk memanggil dan menguji layanan Intelligent Speech Interaction dengan token akses. Token ini hanya untuk tujuan pengujian.
Berikut adalah contoh respons kode:
{ "NlsRequestId": "aed8c1af075347819118ff6bf811****", "RequestId": "0989F63E-5069-4AB0-822B-5BD2D953****", "Token": { "ExpireTime": 1527592757, "Id": "124fc7526f434b8c8198d6196b0a****", "UserId": "12345678****" } }Parameter dalam respons contoh:
Parameter Id menunjukkan ID token akses yang ditentukan dalam permintaan.
Parameter ExpireTime menunjukkan timestamp yang mewakili periode validitas token akses. Unit: detik. Sebagai contoh, nilai
1527592757menunjukkan bahwa token akses valid hingga19:19:17 (UTC+8) pada 29 Mei 2018.
Pemecahan Masalah
Jika terjadi kesalahan saat menggunakan SDK untuk memperoleh token akses, lakukan pemecahan masalah sesuai dengan pesan kesalahan. Untuk informasi lebih lanjut, lihat Daftar Kode Kesalahan.
Kesalahan paling umum adalah
Permintaan ditolak karena kontrol aliran pengguna.Kesalahan ini menunjukkan bahwa permintaan API ditolak oleh Alibaba Cloud API Gateway karena frekuensi pengiriman permintaan token melebihi batas atas. Untuk menghindari kesalahan ini, jangan kirim permintaan token akses dengan frekuensi tinggi.Setelah memperoleh token akses, Anda dapat menggunakannya beberapa kali selama periode validitasnya. Token akses dapat digunakan di lintas thread, proses, atau server.
Memperoleh token akses pada klien seluler
Kami merekomendasikan agar Anda mengintegrasikan Alibaba Cloud SDK for Java ke server Anda untuk memperoleh token akses.
Integrasikan Alibaba Cloud SDK for Java ke server. Kemudian, server mengirim permintaan HTTP GET untuk memanggil metode */gettoken guna memperoleh token akses.
Klien memanggil metode */gettoken untuk memperoleh token akses dan periode validitas dari server.
Klien menggunakan token akses untuk mengakses layanan Intelligent Speech Interaction. Sebelum memanggil layanan tersebut, klien mengirim permintaan untuk memperoleh token akses.
Klien menyimpan token akses di cache lokal. Selama token belum kedaluwarsa, klien dapat terus menggunakan token yang disimpan di cache untuk mengakses layanan Intelligent Speech Interaction. Jika token kedaluwarsa, klien harus memperoleh token baru dari server dan memperbarui cache lokal.
Gunakan SDK untuk memperoleh token akses
Demo untuk Java
Unduh versi terbaru Alibaba Cloud SDK for Java dari server Maven. Unduh File ZIP Demo.
<dependency>
<groupId>com.alibaba.nls</groupId>
<artifactId>nls-sdk-common</artifactId>
<version>2.1.6</version>
</dependency>AccessToken token = new AccessToken("your akID", "your akSecret");
token.apply();
String accessToken = token.getToken();
long expireTime = token.getExpireTime();Jalankan kode Java sebelumnya di server. Pengguna Android harus menjalankan kode di server atau klien PC untuk memperoleh token akses. Untuk memastikan keamanan data, kami merekomendasikan agar Anda menyiapkan server dan menggunakan klien untuk meminta token akses dari server.
Demo untuk C++
Instal alat berikut di Linux:
glibc 2.5 atau lebih baru
Ccc4 atau Ccc5
Instal alat berikut di Windows: Visual Studio 2013 atau Visual Studio 2015.
Buat proyek di Windows.
Kompilasi demo.
Asumsikan bahwa demo diekstraksi ke direktori
path/to. Jalankan perintah berikut di terminal Linux untuk mengompilasi dan menjalankan demo.Jika sistem operasi mendukung CMake:
Pastikan bahwa CMake 2.4 atau lebih baru diinstal di terminal Linux.
Ganti direktori:
cd path/to/sdk/lib.Ekstrak file:
tar -zxvpf linux.tar.gz.Ganti direktori:
cd path/to/sdk.Jalankan skrip kompilasi:
./build.sh.Ganti direktori:
cd path/to/sdk/demo.Jalankan demo:
./tokenDemo <yourAccessKeySecret> <yourAccessKeyId>.
Jika sistem operasi tidak mendukung CMake:
Ganti direktori:
cd path/to/sdk/lib.Ekstrak file:
tar -zxvpf linux.tar.gz.Ganti direktori:
cd path/to/sdk/demo.Jalankan perintah g++ untuk mengompilasi demo:
g++ -o tokenDemo tokenDemo.cpp -I path/to/sdk/include/ -L path/to/sdk/lib/linux -ljsoncpp -lssl -lcrypto -lcurl -luuid -lnlsCommonSdk -D_GLIBCXX_USE_CXX11_ABI=0.Tentukan jalur pustaka:
export LD_LIBRARY_PATH=path/to/sdk/lib/linux/.Jalankan demo:
./tokenDemo <yourAccessKeySecret> <yourAccessKeyId>.
Memperoleh token akses.
Berikut adalah contoh kode sampel tentang cara memperoleh token akses:
#include <iostream> #include "Token.h" using std::cout; using std::endl; using namespace AlibabaNlsCommon; // Memperoleh ID token akses. int getTokenId(const char* keySecret, const char* keyId) { NlsToken nlsTokenRequest; / *Tetapkan Rahasia AccessKey akun Alibaba Cloud Anda.* / nlsTokenRequest.setKeySecret(keySecret); / *Tetapkan ID AccessKey akun Alibaba Cloud Anda.* / nlsTokenRequest.setAccessKeyId(keyId); /* Memperoleh token akses. Jika nilai 0 dikembalikan, permintaan berhasil. Jika nilai -1 dikembalikan, permintaan gagal. * / if (-1 == nlsTokenRequest.applyNlsToken()) { cout << "Gagal: " << nlsTokenRequest.getErrorMsg() << endl; / *Penyebab kegagalan.* / return -1; } else { cout << "TokenId: " << nlsTokenRequest.getToken() << endl; / *ID token akses.* / cout << "TokenId expireTime: " << nlsTokenRequest.getExpireTime() << endl; / *Timestamp yang menunjukkan periode validitas token akses dalam detik.* / return 0; } }
Demo untuk PHP
Versi terbaru Alibaba Cloud SDK for PHP digunakan dalam contoh ini. Untuk informasi lebih lanjut, lihat Alibaba Cloud SDK for PHP. Anda dapat terus menggunakan versi sebelumnya dari Alibaba Cloud SDK for PHP. Namun, kami merekomendasikan agar Anda memperbarui ke versi terbaru. Untuk informasi lebih lanjut, lihat aliyun-openapi-php-sdk.
Sebelum menginstal Alibaba Cloud SDK for PHP, pastikan lingkungan menggunakan PHP V5.5 atau versi lebih baru. Untuk informasi lebih lanjut, lihat Instal Alibaba Cloud SDK for PHP.
Prosedur:
Buat klien global.
Buat permintaan API dan konfigurasikan parameter.
Kirim permintaan API dan proses respons atau pengecualian.
<?php
require __DIR__ . '/vendor/autoload.php';
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
/**
* Langkah 1: Buat klien global.
* Gunakan ID AccessKey dan Rahasia AccessKey pengguna RAM untuk menyelesaikan otentikasi.
*/
AlibabaCloud::accessKeyClient(
"<your-access-key-id>",
"<your-access-key-secret>")
->regionId("ap-southeast-1")
->asDefaultClient();
try {
$response = AlibabaCloud::nlsCloudMeta()
->v20180518()
->createToken()
->request();
print $response . "\n";
$token = $response["Token"];
if ($token != NULL) {
print "Token diperoleh:\n";
print_r($token);
}
else {
print "Gagal memperoleh token\n";
}
} catch (ClientException $exception) {
// Dapatkan pesan kesalahan.
print_r($exception->getErrorMessage());
} catch (ServerException $exception) {
// Dapatkan pesan kesalahan.
print_r($exception->getErrorMessage());
}Gunakan metode CommonRequest untuk memperoleh token akses
Jika Anda menggunakan Alibaba Cloud SDK untuk memperoleh token akses, kami merekomendasikan agar Anda memanggil operasi API dalam gaya panggilan prosedur jarak jauh (RPC). Untuk memulai permintaan API umum dalam gaya RPC, Anda harus menentukan parameter berikut.
Parameter | Nilai | Deskripsi |
domain | nlsmeta.ap-southeast-1.aliyuncs.com | Titik akhir Intelligent Speech Interaction. Nilainya tetap. |
region_id | ap-southeast-1 | ID wilayah layanan Intelligent Speech Interaction yang diminta. Nilainya tetap. |
action | CreateToken | Operasi API yang ingin Anda panggil. Nilainya tetap. |
version | 2019-07-17 | Nomor versi API. Nilainya tetap. |
Demo untuk Java
Tambahkan dependensi Java.
Tambahkan pustaka inti (V3.7.1) dan pustaka fastjson dari Alibaba Cloud SDK for Java.
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.7.1</version> </dependency> <!-- http://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency>Memperoleh token akses.
Berikut adalah contoh kode sampel tentang cara memperoleh token akses:
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.http.MethodType; import com.aliyuncs.http.ProtocolType; import com.aliyuncs.profile.DefaultProfile; import java.text.SimpleDateFormat; import java.util.Date; public class CreateTokenDemo { // ID wilayah layanan Intelligent Speech Interaction yang diminta. private static final String REGIONID = "ap-southeast-1"; // Titik akhir layanan Intelligent Speech Interaction yang diminta. private static final String DOMAIN = "nlsmeta.ap-southeast-1.aliyuncs.com"; // Nomor versi API. private static final String API_VERSION = "2019-07-17"; // Operasi API yang ingin Anda panggil. private static final String REQUEST_ACTION = "CreateToken"; // Parameter respons. private static final String KEY_TOKEN = "Token"; private static final String KEY_ID = "Id"; private static final String KEY_EXPIRETIME = "ExpireTime"; public static void main(String args[]) throws ClientException { if (args.length < 2) { System.err.println("CreateTokenDemo membutuhkan parameter: <AccessKey Id> <AccessKey Secret>"); System.exit(-1); } String accessKeyId = args[0]; String accessKeySecret = args[1]; // Buat instance DefaultAcsClient dan inisialisasi instance. DefaultProfile profile = DefaultProfile.getProfile( REGIONID, accessKeyId, accessKeySecret); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setDomain(DOMAIN); request.setVersion(API_VERSION); request.setAction(REQUEST_ACTION); request.setMethod(MethodType.POST); request.setProtocol(ProtocolType.HTTPS); CommonResponse response = client.getCommonResponse(request); System.out.println(response.getData()); if (response.getHttpStatus() == 200) { JSONObject result = JSON.parseObject(response.getData()); String token = result.getJSONObject(KEY_TOKEN).getString(KEY_ID); long expireTime = result.getJSONObject(KEY_TOKEN).getLongValue(KEY_EXPIRETIME); System.out.println("Token diperoleh: " + token + ", Timestamp yang menunjukkan periode validitas (unit: detik): " + expireTime); // Konversi timestamp 10 digit menjadi waktu dalam UTC+8. String expireDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(expireTime * 1000)); System.out.println("Periode validitas token akses dalam UTC+8: " + expireDate); } else { System.out.println("Gagal memperoleh token.") } } }
Demo untuk Python
Gunakan pip untuk menginstal SDK.
Jalankan perintah berikut untuk menginstal Alibaba Cloud SDK for Python V2.13.3:
pip install aliyun-python-sdk-core==2.13.3 # Instal pustaka inti Alibaba Cloud SDK for Python.Memperoleh token akses.
Kode sampel:
# -*- coding: utf8 -*- from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest # Buat instance AcsClient. client = AcsClient( "<Your AccessKey ID>", "<Your AccessKey secret>", "ap-southeast-1" ); # Buat permintaan dan konfigurasikan parameter permintaan. request = CommonRequest() request.set_method('POST') request.set_domain('nlsmeta.ap-southeast-1.aliyuncs.com') request.set_version('2019-07-17') request.set_action_name('CreateToken') response = client.do_action_with_exception(request) print(response)
Demo untuk GO
Kode sampel:
package main
import (
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
)
func main() {
client, err := sdk.NewClientWithAccessKey("ap-southeast-1", "<yourAccessKey Id>", "<yourAccessKey Secret>")
if err != nil {
panic(err)
}
request := requests.NewCommonRequest()
request.Method = "POST"
request.Domain = "nlsmeta.ap-southeast-1.aliyuncs.com"
request.ApiName = "CreateToken"
request.Version = "2019-07-17"
response, err := client.ProcessCommonRequest(request)
if err != nil {
panic(err)
}
fmt.Print(response.GetHttpStatus())
fmt.Print(response.GetHttpContentString())
}Demo untuk Node.js
Instal SDK untuk Node.js.
Kami merekomendasikan agar Anda menggunakan npm untuk menginstal modul dependen Node.js. Semua SDK resmi Alibaba Cloud untuk Node.js disimpan di direktori @alicloud.
Sebagai contoh, SDK untuk Node.js diunduh ke folder
/path/to/aliyun-openapi-Node.js-sdk. Saat Anda mengembangkan aplikasi berdasarkan pustaka inti SDK, jalankan perintah berikut untuk menginstal modul @alicloud/pop-core.Opsi
--savedalam perintah berikut menulis modul ke file package.json aplikasi sebagai modul dependen:npm install @alicloud/pop-core --saveCatatanAnda juga dapat mengunduh SDK dari GitHub. Untuk informasi lebih lanjut, lihat Unduh SDK dari GitHub.
Memperoleh token akses.
Kode sampel:
var RPCClient = require('@alicloud/pop-core').RPCClient; var client = new RPCClient({ accessKeyId: '<yourAccessKey Id>', accessKeySecret: '<yourAccessKey Secret>', endpoint: 'http://nlsmeta.ap-southeast-1.aliyuncs.com', apiVersion: '2019-07-17' }); // => mengembalikan Promise // => request(Action, params, options) client.request('CreateToken').then((result) => { console.log(result.Token); });
Demo untuk .NET
Instal Alibaba Cloud SDK for .NET.
Dalam demo .NET yang digunakan untuk memperoleh token akses, metode CommonRequest dari Alibaba Cloud SDK for .NET digunakan untuk mengirim permintaan API panggilan terbuka (POP) dalam gaya RPC. Untuk informasi lebih lanjut tentang Alibaba Cloud SDK for .NET, lihat Gunakan SDK untuk .NET.
Untuk informasi lebih lanjut tentang cara menggunakan metode CommonRequest dari Alibaba Cloud SDK for .NET, lihat Pemanggilan Generik.
Anda hanya perlu menginstal pustaka inti dari Alibaba Cloud SDK for .NET. Jika ingin menginstal Alibaba Cloud SDK for .NET, Anda dapat menambahkan referensi ke file Dynamic Link Library (DLL) atau proyek. Untuk informasi lebih lanjut, lihat Gunakan SDK untuk .NET.
Memperoleh token akses.
Kode sampel:
using System; using Aliyun.Acs.Core; using Aliyun.Acs.Core.Exceptions; using Aliyun.Acs.Core.Profile; class Sample { static void Main(string[] args) { // Buat instance klien untuk memulai permintaan. IClientProfile profile = DefaultProfile.GetProfile( "ap-southeast-1", "<yourAccessKey Id>", "<yourAccessKey Secret>"); DefaultAcsClient client = new DefaultAcsClient(profile); try { // Buat permintaan. CommonRequest request = new CommonRequest(); request.Domain = "nlsmeta.ap-southeast-1.aliyuncs.com"; request.Version = "2019-07-17"; // Permintaan API ini dalam gaya RPC. Tetapkan parameter Action ke operasi API RPC yang ingin Anda panggil. request.Action = "CreateToken"; // Mulai permintaan dan peroleh respons. CommonResponse response = client.GetCommonResponse(request); System.Console.WriteLine(response.Data); } catch (ServerException ex) { System.Console.WriteLine(ex.ToString()); } catch (ClientException ex) { System.Console.WriteLine(ex.ToString()); } } }