すべてのプロダクト
Search
ドキュメントセンター

Fraud Detection:SDK を使用した API 呼び出し

最終更新日:Apr 01, 2026

Fraud Detection SDK は、署名検証およびリクエストのフォーマットを自動的に処理するため、これらをゼロから構築することなく API オペレーションを呼び出すことができます。SDK は Java、Python、PHP、C#、および Go でご利用いただけます。

前提条件

以下の条件を満たしていることを確認してください。

  • Fraud Detection が有効化されている Alibaba Cloud アカウント

  • ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数に格納された AccessKey ID および AccessKey Secret

本番ワークロードでは、長期的な AccessKey ペアの代わりに、セキュリティトークンサービス (STS) を使用して短期間有効な認証情報を生成してください。

操作

各 SDK 呼び出しは同じパターンに従います。AccessKey 認証情報とエンドポイントを使用してクライアントを初期化し、API パラメーターを設定し、操作固有のクエリパラメーターを指定してから API を呼び出します。

主な操作は次の 2 つです。

操作目的
RequestDecisionリスク信号を評価するために意思決定エンジンを呼び出します。
ExecuteRequestSGアカウト不正利用検出などのシナリオ固有のリスク管理を適用します。

エンドポイント

リージョンエンドポイント
シンガポールsaf.ap-southeast-1.aliyuncs.com
マレーシアsaf.ap-southeast-3.aliyuncs.com
インドネシアsaf.ap-southeast-5.aliyuncs.com

Java 用 SDK

インストール

Maven の pom.xml に SAF SDK を追加します。

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-saf</artifactId>
    <version>3.0.1</version>
</dependency>

アドレス をクリックして、Java Maven リポジトリにアクセスします。

以下の依存関係も追加してください。

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <optional>true</optional>
    <version>4.5.25</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.68.noneautotype</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.3</version>
</dependency>
<dependency>
    <groupId>io.opentracing</groupId>
    <artifactId>opentracing-util</artifactId>
    <version>0.31.0</version>
</dependency>

利用可能なバージョンは Java Maven リポジトリ で確認できます。

Java SDK ソースコード:

意思決定エンジンの呼び出し (RequestDecision)

package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    public static com.aliyun.teaopenapi.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必須。AccessKey ID を指定します。
                .setAccessKeyId(accessKeyId)
                // 必須。AccessKey Secret を指定します。
                .setAccessKeySecret(accessKeySecret);
        // エンドポイントのリファレンス:https://api.alibabacloud.com/product/saf
        // シンガポール:ap-southeast-1 | マレーシア:ap-southeast-3 | インドネシア:ap-southeast-5
        config.endpoint = "saf.ap-southeast-1.aliyuncs.com";
        return new com.aliyun.teaopenapi.Client(config);
    }

    public static com.aliyun.teaopenapi.models.Params createApiInfo() throws Exception {
        com.aliyun.teaopenapi.models.Params params = new com.aliyun.teaopenapi.models.Params()
                .setAction("RequestDecision")
                .setVersion("2019-05-21")
                .setProtocol("HTTPS")
                .setMethod("POST")
                .setAuthType("AK")
                .setStyle("RPC")
                .setPathname("/")
                .setReqBodyType("json")
                .setBodyType("json");
        return params;
    }

    public static void main(String[] args_) throws Exception {
        // シークレットがコード内に露出しないように、環境変数から認証情報を読み取ります。
        // 本番環境では、STS を使用して短期間有効な認証情報を生成してください。
        com.aliyun.teaopenapi.Client client = Sample.createClient(
            System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        );
        com.aliyun.teaopenapi.models.Params params = Sample.createApiInfo();

        // RequestDecision 操作のクエリパラメーターを設定します。
        java.util.Map<String, Object> queries = new java.util.HashMap<>();
        queries.put("ServiceParameters", "{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}");
        queries.put("EventCode", "de_*****");

        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        com.aliyun.teaopenapi.models.OpenApiRequest request = new com.aliyun.teaopenapi.models.OpenApiRequest()
                .setQuery(com.aliyun.openapiutil.Client.query(queries));

        // 応答は、レスポンスボディ、ヘッダー、HTTP ステータスコードを含むマップです。
        client.callApi(params, request, runtime);
    }
}

シナリオ固有のリスク管理の適用 (ExecuteRequestSG)

#!/usr/bin/env xcrun swift

import Cocoa
import Foundation
import Tea
import AlibabacloudOpenApi
import AlibabaCloudOpenApiUtil
import TeaUtils

open class Client {
    public static func createClient(_ accessKeyId: String?, _ accessKeySecret: String?) throws -> AlibabacloudOpenApi.Client {
        var config: AlibabacloudOpenApi.Config = AlibabacloudOpenApi.Config([
            "accessKeyId": accessKeyId as! String,
            "accessKeySecret": accessKeySecret as! String
        ])
        config.endpoint = "saf.ap-southeast-1.aliyuncs.com"
        return AlibabacloudOpenApi.Client(config)
    }

    public static func createApiInfo() -> AlibabacloudOpenApi.Params {
        var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([
            "action": "ExecuteRequestSG",
            "version": "2019-05-21",
            "protocol": "HTTPS",
            "method": "POST",
            "authType": "AK",
            "style": "RPC",
            "pathname": "/",
            "reqBodyType": "json",
            "bodyType": "json"
        ])
        return params as! AlibabacloudOpenApi.Params
    }

    @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
    public static func main(_ args: [String]?) async throws -> Void {
        var client: AlibabacloudOpenApi.Client = try Client.createClient(
            ProcessInfo.processInfo.environment["ALIBABA_CLOUD_ACCESS_KEY_ID"],
            ProcessInfo.processInfo.environment["ALIBABA_CLOUD_ACCESS_KEY_SECRET"]
        )
        var params: AlibabacloudOpenApi.Params = Client.createApiInfo()
        var queries: [String: Any] = [:]
        queries["ServiceParameters"] = "{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}";
        queries["Service"] = "account_abuse_intl_pro";
        var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:])
        var request: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([
            "query": AlibabaCloudOpenApiUtil.Client.query(queries)
        ])
        try await client.callApi(
            params as! AlibabacloudOpenApi.Params,
            request as! AlibabacloudOpenApi.OpenApiRequest,
            runtime as! TeaUtils.RuntimeOptions
        )
    }
}

Client.main(CommandLine.arguments)

Python 用 SDK

インストール

Python SDK ソースコード をダウンロードし、依存関係をインストールします。

手順 1. Alibaba Cloud SDK コアライブラリをインストールします。

  • Python 2.x:

    pip install aliyun-python-sdk-core
  • Python 3.x:

    pip install aliyun-python-sdk-core-v3

手順 2. SAF SDK をインストールします。

pip install aliyun-python-sdk-saf

Python の例:

意思決定エンジンの呼び出し (RequestDecision)

# -*- coding: utf-8 -*-
import os
import sys
from typing import List

from alibabacloud_tea_openapi.client import Client as OpenApiClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_openapi_util.client import Client as OpenApiUtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(access_key_id: str, access_key_secret: str) -> OpenApiClient:
        config = open_api_models.Config(
            # 必須。AccessKey ID を指定します。
            access_key_id=access_key_id,
            # 必須。AccessKey Secret を指定します。
            access_key_secret=access_key_secret
        )
        # エンドポイントのリファレンス:https://api.aliyun.com/product/saf
        config.endpoint = f'saf.ap-southeast-1.aliyuncs.com'
        return OpenApiClient(config)

    @staticmethod
    def create_api_info() -> open_api_models.Params:
        params = open_api_models.Params(
            action='RequestDecision',
            version='2019-05-21',
            protocol='HTTPS',
            method='POST',
            auth_type='AK',
            style='RPC',
            pathname=f'/',
            req_body_type='json',
            body_type='json'
        )
        return params

    @staticmethod
    def main(args: List[str]) -> None:
        # シークレットがコード内に露出しないように、環境変数から認証情報を読み取ります。
        # 本番環境では、STS を使用して短期間有効な認証情報を生成してください。
        client = Sample.create_client(
            os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
        )
        params = Sample.create_api_info()

        # RequestDecision 操作のクエリパラメーターを設定します。
        queries = {}
        queries['ServiceParameters'] = '{"email":"example@alibabacloud.com","ip":"x.x.x.x","deviceToken":"******"}'
        queries['EventCode'] = 'de_*****'

        runtime = util_models.RuntimeOptions()
        request = open_api_models.OpenApiRequest(
            query=OpenApiUtilClient.query(queries)
        )
        # 応答は、レスポンスボディ、ヘッダー、HTTP ステータスコードを含むマップです。
        client.call_api(params, request, runtime)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

シナリオ固有のリスク管理の適用 (ExecuteRequestSG)

# -*- coding: utf-8 -*-
import os
import sys
from typing import List

from alibabacloud_tea_openapi.client import Client as OpenApiClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_openapi_util.client import Client as OpenApiUtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client(access_key_id: str, access_key_secret: str) -> OpenApiClient:
        config = open_api_models.Config(
            access_key_id=access_key_id,
            access_key_secret=access_key_secret
        )
        config.endpoint = f'saf.ap-southeast-1.aliyuncs.com'
        return OpenApiClient(config)

    @staticmethod
    def create_api_info() -> open_api_models.Params:
        params = open_api_models.Params(
            action='ExecuteRequestSG',
            version='2019-05-21',
            protocol='HTTPS',
            method='POST',
            auth_type='AK',
            style='RPC',
            pathname=f'/',
            req_body_type='json',
            body_type='json'
        )
        return params

    @staticmethod
    def main(args: List[str]) -> None:
        client = Sample.create_client(
            os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
        )
        params = Sample.create_api_info()

        queries = {}
        queries['ServiceParameters'] = '{"email":"example@alibabacloud.com","ip":"x.x.x.x","deviceToken":"******"}'
        queries['Service'] = 'account_abuse_intl_pro'

        runtime = util_models.RuntimeOptions()
        request = open_api_models.OpenApiRequest(
            query=OpenApiUtilClient.query(queries)
        )
        client.call_api(params, request, runtime)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

PHP 用 SDK

PHP SDK ソースコード をダウンロードします。こちら

PHP の例:

意思決定エンジンの呼び出し (RequestDecision)

<?php
namespace AlibabaCloud\SDK\Sample;

use Darabonba\OpenApi\OpenApiClient;
use AlibabaCloud\OpenApiUtil\OpenApiUtilClient;
use Darabonba\OpenApi\Models\Config;
use Darabonba\OpenApi\Models\Params;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\OpenApiRequest;

class Sample {

    public static function createClient($accessKeyId, $accessKeySecret){
        $config = new Config([
            // 必須。AccessKey ID を指定します。
            "accessKeyId" => $accessKeyId,
            // 必須。AccessKey Secret を指定します。
            "accessKeySecret" => $accessKeySecret
        ]);
        // エンドポイントのリファレンス:https://api.aliyun.com/product/saf
        $config->endpoint = "saf.ap-southeast-1.aliyuncs.com";
        return new OpenApiClient($config);
    }

    public static function createApiInfo(){
        $params = new Params([
            "action" => "RequestDecision",
            "version" => "2019-05-21",
            "protocol" => "HTTPS",
            "method" => "POST",
            "authType" => "AK",
            "style" => "RPC",
            "pathname" => "/",
            "reqBodyType" => "json",
            "bodyType" => "json"
        ]);
        return $params;
    }

    public static function main($args){
        // シークレットがコード内に露出しないように、環境変数から認証情報を読み取ります。
        // 本番環境では、STS を使用して短期間有効な認証情報を生成してください。
        $client = self::createClient(
            getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
        );
        $params = self::createApiInfo();

        // RequestDecision 操作のクエリパラメーターを設定します。
        $queries = [];
        $queries["ServiceParameters"] = "{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}";
        $queries["EventCode"] = "de_*****";

        $runtime = new RuntimeOptions([]);
        $request = new OpenApiRequest([
            "query" => OpenApiUtilClient::query($queries)
        ]);
        // 応答は、レスポンスボディ、ヘッダー、HTTP ステータスコードを含むマップです。
        $client->callApi($params, $request, $runtime);
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));

シナリオ固有のリスク管理の適用 (ExecuteRequestSG)

<?php
namespace AlibabaCloud\SDK\Sample;

use Darabonba\OpenApi\OpenApiClient;
use AlibabaCloud\OpenApiUtil\OpenApiUtilClient;
use Darabonba\OpenApi\Models\Config;
use Darabonba\OpenApi\Models\Params;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\OpenApiRequest;

class Sample {

    public static function createClient($accessKeyId, $accessKeySecret){
        $config = new Config([
            "accessKeyId" => $accessKeyId,
            "accessKeySecret" => $accessKeySecret
        ]);
        $config->endpoint = "saf.ap-southeast-1.aliyuncs.com";
        return new OpenApiClient($config);
    }

    public static function createApiInfo(){
        $params = new Params([
            "action" => "ExecuteRequestSG",
            "version" => "2019-05-21",
            "protocol" => "HTTPS",
            "method" => "POST",
            "authType" => "AK",
            "style" => "RPC",
            "pathname" => "/",
            "reqBodyType" => "json",
            "bodyType" => "json"
        ]);
        return $params;
    }

    public static function main($args){
        $client = self::createClient(
            getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
        );
        $params = self::createApiInfo();

        $queries = [];
        $queries["ServiceParameters"] = "{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}";
        $queries["Service"] = "account_abuse_intl_pro";

        $runtime = new RuntimeOptions([]);
        $request = new OpenApiRequest([
            "query" => OpenApiUtilClient::query($queries)
        ]);
        $client->callApi($params, $request, $runtime);
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));

C# 用 SDK

C# SDK ソースコード をダウンロードします。

意思決定エンジンの呼び出し (RequestDecision)

using System;
using System.Collections.Generic;
using Tea;
using Tea.Utils;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static AlibabaCloud.OpenApiClient.Client CreateClient(string accessKeyId, string accessKeySecret)
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // 必須。AccessKey ID を指定します。
                AccessKeyId = accessKeyId,
                // 必須。AccessKey Secret を指定します。
                AccessKeySecret = accessKeySecret,
            };
            // エンドポイントのリファレンス:https://api.aliyun.com/product/saf
            config.Endpoint = "saf.ap-southeast-1.aliyuncs.com";
            return new AlibabaCloud.OpenApiClient.Client(config);
        }

        public static AlibabaCloud.OpenApiClient.Models.Params CreateApiInfo()
        {
            AlibabaCloud.OpenApiClient.Models.Params params_ = new AlibabaCloud.OpenApiClient.Models.Params
            {
                Action = "RequestDecision",
                Version = "2019-05-21",
                Protocol = "HTTPS",
                Method = "POST",
                AuthType = "AK",
                Style = "RPC",
                Pathname = "/",
                ReqBodyType = "json",
                BodyType = "json",
            };
            return params_;
        }

        public static void Main(string[] args)
        {
            // シークレットがコード内に露出しないように、環境変数から認証情報を読み取ります。
            // 本番環境では、STS を使用して短期間有効な認証情報を生成してください。
            AlibabaCloud.OpenApiClient.Client client = CreateClient(
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            );
            AlibabaCloud.OpenApiClient.Models.Params params_ = CreateApiInfo();

            // RequestDecision 操作のクエリパラメーターを設定します。
            Dictionary<string, object> queries = new Dictionary<string, object>(){};
            queries["ServiceParameters"] = "{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}";
            queries["EventCode"] = "de_*****";

            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            AlibabaCloud.OpenApiClient.Models.OpenApiRequest request = new AlibabaCloud.OpenApiClient.Models.OpenApiRequest
            {
                Query = AlibabaCloud.OpenApiUtil.Client.Query(queries),
            };
            // 応答は、レスポンスボディ、ヘッダー、HTTP ステータスコードを含むマップです。
            client.CallApi(params_, request, runtime);
        }
    }
}

シナリオ固有のリスク管理の適用 (ExecuteRequestSG)

using System;
using System.Collections.Generic;
using Tea;
using Tea.Utils;

namespace AlibabaCloud.SDK.Sample
{
    public class Sample
    {
        public static AlibabaCloud.OpenApiClient.Client CreateClient(string accessKeyId, string accessKeySecret)
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                AccessKeyId = accessKeyId,
                AccessKeySecret = accessKeySecret,
            };
            config.Endpoint = "saf.ap-southeast-1.aliyuncs.com";
            return new AlibabaCloud.OpenApiClient.Client(config);
        }

        public static AlibabaCloud.OpenApiClient.Models.Params CreateApiInfo()
        {
            AlibabaCloud.OpenApiClient.Models.Params params_ = new AlibabaCloud.OpenApiClient.Models.Params
            {
                Action = "ExecuteRequestSG",
                Version = "2019-05-21",
                Protocol = "HTTPS",
                Method = "POST",
                AuthType = "AK",
                Style = "RPC",
                Pathname = "/",
                ReqBodyType = "json",
                BodyType = "json",
            };
            return params_;
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.OpenApiClient.Client client = CreateClient(
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            );
            AlibabaCloud.OpenApiClient.Models.Params params_ = CreateApiInfo();

            Dictionary<string, object> queries = new Dictionary<string, object>(){};
            queries["ServiceParameters"] = "{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}";
            queries["Service"] = "account_abuse_intl_pro";

            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            AlibabaCloud.OpenApiClient.Models.OpenApiRequest request = new AlibabaCloud.OpenApiClient.Models.OpenApiRequest
            {
                Query = AlibabaCloud.OpenApiUtil.Client.Query(queries),
            };
            client.CallApi(params_, request, runtime);
        }
    }
}

意思決定エンジンを使用する場合:

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;


namespace AlibabaCloud.SDK.Sample
{
    public class Sample 
    {

        /**
         * AccessKey ペアを使用してクライアントを初期化します。
         * @param accessKeyId
         * @param accessKeySecret
         * @return Client
         * @throws Exception
         */
        public static AlibabaCloud.OpenApiClient.Client CreateClient(string accessKeyId, string accessKeySecret)
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // 必須。AccessKey ID。
                AccessKeyId = accessKeyId,
                // 必須。AccessKey Secret。
                AccessKeySecret = accessKeySecret,
            };
            // エンドポイントの詳細については、https://api.aliyun.com/product/saf をご参照ください。
            config.Endpoint = "saf.ap-southeast-1.aliyuncs.com";
            return new AlibabaCloud.OpenApiClient.Client(config);
        }

        /**
         * API 関連情報。
         * @param path params
         * @return OpenApi.Params
         */
        public static AlibabaCloud.OpenApiClient.Models.Params CreateApiInfo()
        {
            AlibabaCloud.OpenApiClient.Models.Params params_ = new AlibabaCloud.OpenApiClient.Models.Params
            {
                // API オペレーションの名前。
                Action = "RequestDecision",
                // API のバージョン。
                Version = "2019-05-21",
                // API のプロトコル。
                Protocol = "HTTPS",
                // API の HTTP メソッド。
                Method = "POST",
                AuthType = "AK",
                Style = "RPC",
                // API のパス。
                Pathname = "/",
                // リクエストボディのフォーマット。
                ReqBodyType = "json",
                // レスポンスボディのフォーマット。
                BodyType = "json",
            };
            return params_;
        }

        public static void Main(string[] args)
        {
            // ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
            // プロジェクトコードが漏洩すると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。以下のサンプルコードは、API 呼び出しのために環境変数から AccessKey ペアを取得する方法を示しています。これは参考用です。セキュリティトークンサービス (STS) など、より安全な方法を使用することを推奨します。
            AlibabaCloud.OpenApiClient.Client client = CreateClient(Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"), Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            AlibabaCloud.OpenApiClient.Models.Params params_ = CreateApiInfo();
            // クエリパラメーター
            Dictionary<string, object> queries = new Dictionary<string, object>(){};
            queries["ServiceParameters"] = "{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}";
            queries["EventCode"] = "de_*****";
            // ランタイムオプション
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            AlibabaCloud.OpenApiClient.Models.OpenApiRequest request = new AlibabaCloud.OpenApiClient.Models.OpenApiRequest
            {
                Query = AlibabaCloud.OpenApiUtil.Client.Query(queries),
            };
            // コードをコピーして実行する場合は、API 呼び出しの戻り値を出力します。
            // 戻り値はマップ型です。このマップから、レスポンスボディ、レスポンスヘッダー、HTTP ステータスコードの 3 種類のデータを取得できます。
            client.CallApi(params_, request, runtime);
        }


    }
}

リスク管理シナリオの場合:

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

using Tea;
using Tea.Utils;


namespace AlibabaCloud.SDK.Sample
{
    public class Sample 
    {

        /**
         * AccessKey ペアを使用してクライアントを初期化します。
         * @param accessKeyId
         * @param accessKeySecret
         * @return Client
         * @throws Exception
         */
        public static AlibabaCloud.OpenApiClient.Client CreateClient(string accessKeyId, string accessKeySecret)
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
                // 必須。AccessKey ID。
                AccessKeyId = accessKeyId,
                // 必須。AccessKey Secret。
                AccessKeySecret = accessKeySecret,
            };
            // エンドポイントの詳細については、https://api.aliyun.com/product/saf をご参照ください。
            config.Endpoint = "saf.ap-southeast-1.aliyuncs.com";
            return new AlibabaCloud.OpenApiClient.Client(config);
        }

        /**
         * API 関連情報。
         * @param path params
         * @return OpenApi.Params
         */
        public static AlibabaCloud.OpenApiClient.Models.Params CreateApiInfo()
        {
            AlibabaCloud.OpenApiClient.Models.Params params_ = new AlibabaCloud.OpenApiClient.Models.Params
            {
                // API オペレーションの名前。
                Action = "ExecuteRequest",
                // API のバージョン。
                Version = "2019-05-21",
                // API のプロトコル。
                Protocol = "HTTPS",
                // API の HTTP メソッド。
                Method = "POST",
                AuthType = "AK",
                Style = "RPC",
                // API のパス。
                Pathname = "/",
                // リクエストボディのフォーマット。
                ReqBodyType = "json",
                // レスポンスボディのフォーマット。
                BodyType = "json",
            };
            return params_;
        }

        public static void Main(string[] args)
        {
            // ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
            // プロジェクトコードが漏洩すると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。以下のサンプルコードは、API 呼び出しのために環境変数から AccessKey ペアを取得する方法を示しています。これは参考用です。セキュリティトークンサービス (STS) など、より安全な方法を使用することを推奨します。
            AlibabaCloud.OpenApiClient.Client client = CreateClient(Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"), Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
            AlibabaCloud.OpenApiClient.Models.Params params_ = CreateApiInfo();
            // クエリパラメーター
            Dictionary<string, object> queries = new Dictionary<string, object>(){};
            queries["ServiceParameters"] = "{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}";
            queries["Service"] = "account_abuse_intl_pro";
            // ランタイムオプション
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            AlibabaCloud.OpenApiClient.Models.OpenApiRequest request = new AlibabaCloud.OpenApiClient.Models.OpenApiRequest
            {
                Query = AlibabaCloud.OpenApiUtil.Client.Query(queries),
            };
            // コードをコピーして実行する場合は、API 呼び出しの戻り値を出力します。
            // 戻り値はマップ型です。このマップから、レスポンスボディ、レスポンスヘッダー、HTTP ステータスコードの 3 種類のデータを取得できます。
            client.CallApi(params_, request, runtime);
        }


    }
}

Go 用 SDK

Go SDK ソースコード をダウンロードします。

Go の例:

意思決定エンジンの呼び出し (RequestDecision)

package main

import (
  "os"
  openapi  "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  openapiutil  "github.com/alibabacloud-go/openapi-util/service"
  util  "github.com/alibabacloud-go/tea-utils/v2/service"
  "github.com/alibabacloud-go/tea/tea"
)

func CreateClient(accessKeyId *string, accessKeySecret *string) (_result *openapi.Client, _err error) {
  config := &openapi.Config{
    // 必須。AccessKey ID を指定します。
    AccessKeyId: accessKeyId,
    // 必須。AccessKey Secret を指定します。
    AccessKeySecret: accessKeySecret,
  }
  // エンドポイントのリファレンス:https://api.aliyun.com/product/saf
  // シンガポール:ap-southeast-1 | マレーシア:ap-southeast-3 | インドネシア:ap-southeast-5
  config.Endpoint = tea.String("saf.ap-southeast-1.aliyuncs.com")
  _result = &openapi.Client{}
  _result, _err = openapi.NewClient(config)
  return _result, _err
}

func CreateApiInfo() (_result *openapi.Params) {
  params := &openapi.Params{
    Action:      tea.String("RequestDecision"),
    Version:     tea.String("2019-05-21"),
    Protocol:    tea.String("HTTPS"),
    Method:      tea.String("POST"),
    AuthType:    tea.String("AK"),
    Style:       tea.String("RPC"),
    Pathname:    tea.String("/"),
    ReqBodyType: tea.String("json"),
    BodyType:    tea.String("json"),
  }
  _result = params
  return _result
}

func _main(args []*string) (_err error) {
  // シークレットがコード内に露出しないように、環境変数から認証情報を読み取ります。
  // 本番環境では、STS を使用して短期間有効な認証情報を生成してください。
  client, _err := CreateClient(
    tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
    tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
  )
  if _err != nil {
    return _err
  }

  params := CreateApiInfo()

  // RequestDecision 操作のクエリパラメーターを設定します。
  queries := map[string]interface{}{}
  queries["ServiceParameters"] = tea.String("{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}")
  queries["EventCode"] = tea.String("de_*****")

  runtime := &util.RuntimeOptions{}
  request := &openapi.OpenApiRequest{
    Query: openapiutil.Query(queries),
  }
  // 応答は、レスポンスボディ、ヘッダー、HTTP ステータスコードを含むマップです。
  _, _err = client.CallApi(params, request, runtime)
  if _err != nil {
    return _err
  }
  return _err
}

func main() {
  err := _main(tea.StringSlice(os.Args[1:]))
  if err != nil {
    panic(err)
  }
}

シナリオ固有のリスク管理の適用 (ExecuteRequestSG)

package main

import (
  "os"
  openapi  "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  openapiutil  "github.com/alibabacloud-go/openapi-util/service"
  util  "github.com/alibabacloud-go/tea-utils/v2/service"
  "github.com/alibabacloud-go/tea/tea"
)

func CreateClient(accessKeyId *string, accessKeySecret *string) (_result *openapi.Client, _err error) {
  config := &openapi.Config{
    AccessKeyId:     accessKeyId,
    AccessKeySecret: accessKeySecret,
  }
  config.Endpoint = tea.String("saf.ap-southeast-1.aliyuncs.com")
  _result = &openapi.Client{}
  _result, _err = openapi.NewClient(config)
  return _result, _err
}

func CreateApiInfo() (_result *openapi.Params) {
  params := &openapi.Params{
    Action:      tea.String("ExecuteRequestSG"),
    Version:     tea.String("2019-05-21"),
    Protocol:    tea.String("HTTPS"),
    Method:      tea.String("POST"),
    AuthType:    tea.String("AK"),
    Style:       tea.String("RPC"),
    Pathname:    tea.String("/"),
    ReqBodyType: tea.String("json"),
    BodyType:    tea.String("json"),
  }
  _result = params
  return _result
}

func _main(args []*string) (_err error) {
  client, _err := CreateClient(
    tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
    tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
  )
  if _err != nil {
    return _err
  }

  params := CreateApiInfo()

  queries := map[string]interface{}{}
  queries["ServiceParameters"] = tea.String("{\"email\":\"example@alibabacloud.com\",\"ip\":\"x.x.x.x\",\"deviceToken\":\"******\"}")
  queries["Service"] = tea.String("account_abuse_intl_pro")

  runtime := &util.RuntimeOptions{}
  request := &openapi.OpenApiRequest{
    Query: openapiutil.Query(queries),
  }
  _, _err = client.CallApi(params, request, runtime)
  if _err != nil {
    return _err
  }
  return _err
}

func main() {
  err := _main(tea.StringSlice(os.Args[1:]))
  if err != nil {
    panic(err)
  }
}

参照