認証キー発行:AuthenticationKey

提供ベンダー
システム名
WAGRI情報処理システム
利用条件
有償オプションAPI(申込必要)

概要

API名称
生育予測情報
カテゴリー
説明

本APIはビジョンテック提供の生育予測情報を取得する為のAPIです。 本APIの利用には、ビジョンテックとのライセンス契約が必要となります。 ライセンス契約につきましては、ビジョンテック(tec@vti.co.jp)にお問い合わせください。

添付ファイル

ー

データの更新頻度
ー

リクエスト

URL

https://api.wagri2.net/vti/prediction/AuthenticationKey

説明

本メソッドは、ビジョンテックが提供する公開APIを除く、APIを利用する前に認証キーを発行するメソッドです。 ビジョンテック提供のAPIを利用する際には、パラメータにユーザIDと認証キー(本メソッドで取得) を加えることで初めて利用可能となります。

認証キーの有効期間はリクエストしてから30分間とし、有効期間内に再リクエストされた場合は、 認証キーは上書きされ、その前のキーは無効となります。

HTTPメソッド
GET
パラメータ

URLデータ定義
認証キー発行

名称 型 サイズ 値の説明
userid ユーザーID string Required
password パスワード string Required
呼出例

ー

レスポンス

レイアウト

レスポンスデータ定義
Result

名称 型 サイズ 値の説明
Result   string  
ResultStatus リザルトステータス string  
ErrCode エラーコード string  
ErrMsg エラーメッセージ string  
ServerTime APIサーバの処理日時 string Format: yyyy-MM-dd HH:mm:ss.ffff
AuthenticationKey   string  
Key 認証キー文字列 string Length: 64
IssueTime 認証キー発行日時 string Format: yyyy-MM-dd HH:mm:ss.ffff
レスポンス例

ー

ステータスコード
コード 名称 値の説明
400 Bad Request リクエストが不正です。
401 Unauthorized 認証情報が不正です。
403 Forbidden リソースのアクセスが禁止されています。
500 Internal Server Error サーバー内部でエラーが発生しました。

 

サンプルソースコード

プログラム記述例(WAGRI共通)
import requests
url = "https://api.wagri2.net/API/Public/AgriculturalLand/SearchByCityCode"
payload = {
'CityCode': '432041'
}
headers = {
'X-Authorization': 'アクセストークン',
}
response = requests.get(url, headers=headers, params=payload)
print(response.text)

 

プログラム記述例(個別API)

PHP
1)アクセストークン認証用スクリプト
WAGRIのアクセストークンを取得する為のスクリプトです。

WAGRI_checkAuth.php

<?php
require_once 'FileController.php';

$client_id="****";
$client_secret="****";
$url = "https://api.wagri2.net/Token";

$headers = array(
    'Content-Type: application/x-www-form-urlencoded',
);
$data = array(
    'grant_type' => "client_credentials",
    'client_id' => $client_id,
    'client_secret' => $client_secret
);
$content = http_build_query($data);

$options = array('http' => array(
    'method' => 'POST',
    'content' => $content,
    'header' => implode("\r\n", $headers),
    'ignore_errors' => true,
));
$out = file_get_contents($url, false, stream_context_create($options));
preg_match("/[0-9]{3}/", $http_response_header[0], $stcode);
if((int)$stcode[0] >= 200 && (int)$stcode[0] <= 299){
    $result = json_decode($out);
    print_r($result);
    $controller = new FileController();
    $controller->setToken($result);
} else {
    throw new Exception("リクエストが不正です。\n");
}

?>

4行 $client_id=””; 5行 $client_secret=””; の「****」にWAGRIのclient_id、client_secretの入力が必要です。

2)GrowthVtiを使うための認証用スクリプト
GrowthVtiを使用するための認証キーを取得する為のスクリプトです。

checkAuth_token.php

<?php
require_once 'FileController.php';

$controller = new FileController();
$token = $controller->getToken();
if($token === false){
    return false;
}

$url = "https://api.wagri2.net/API/Public/GrowthVti/AuthenticationKey?";
$header = array("X-Authorization:" . $token);

$context = array(
    "http" => array(
        "method"  => "GET",
    "content-type" => "json",
        "header"  => implode("\r\n",$header),
        'ignore_errors' => true,
    )
);

$userid="****";
$pass="****";
$url = $url . "userid=" .$userid ."&password=" .$pass;
$out = file_get_contents($url, false, stream_context_create($context));
preg_match("/[0-9]{3}/", $http_response_header[0], $stcode);
if((int)$stcode[0] >= 200 && (int)$stcode[0] <= 299){
    $result = json_decode($out);
    print_r($result);
    $controller->setAuthKey($userid, $result);
} else {
    throw new Exception("リクエストが不正です。\n");
}
?>

22行 $userid=””; 23行 $pass=””; の「****」にビジョンテックが提供したユーザID、パスワードの入力が必要です。

3)取得したキーをファイル入出力するスクリプト
取得したキーをファイル入出力するスクリプトです。 ※当スクリプトではファイル出力を行っておりますが、トークンの盗難防止の為本来はデータベース等への保存を推奨しています。

FileController.php

<?php
class FileController{
    private $token_file = "files/token.txt";
    private $auth_file = "files/authkey.txt";
    private $get_token_file = "WAGRI_checkAuth.php";
    private $get_authkey_file = "checkAuth_token.php";

    public function deleteToken(){
        if($this->existsToken()){
            unlink($this->token_file);
        }
    }

    public function deleteAuthKey(){
        if($this->existsAuthKey()){
            unlink($this->auth_file);
        }
    }

    public function existsToken(){
        return file_exists($this->token_file);
    }

    public function execWAGRIGetToken(){
        $cmd = "php " . $this->get_token_file;
        system($cmd, $return_var);
        return $return_var;
    }

    public function setToken($tokenObject){
        if(empty($tokenObject) || empty($tokenObject->access_token)){
            echo "Tokenの取得に失敗しました。\n";
            return false;
        }
        return file_put_contents($this->token_file, $tokenObject->access_token);
    }

    public function getToken(){
        if(!$this->existsToken()){
            $result = $this->execWAGRIGetToken();
            if($result !== 0){
                echo "Tokenの取得に失敗しました。\n";
                return false;
            }
        }
        $token = file_get_contents($this->token_file);
        if($token === false || empty($token)){
            echo "Tokenの読み込みに失敗しました。\n";
            $this->deleteToken();
            return false;
        }
        return $token;
    }

    public function existsAuthKey(){
        return file_exists($this->auth_file);
    }

    public function execGetAuthKey(){
        $cmd = "php " . $this->get_authkey_file;
        system($cmd, $return_var);
        return $return_var;
    }

    public function setAuthKey($userid, $authObject){
        if(empty($authObject) || $authObject->Result->ResultStatus->ErrCode != 0){
            echo "AuthenticationKeyの取得に失敗しました。\n";
            return false;
        }
        $content = array(
            'userid' => $userid,
            'authkey' => $authObject->Result->AuthenticationKey->Key,
        );
        return file_put_contents($this->auth_file, json_encode($content));
    }

    public function getAuthKey(){
        if(!$this->existsAuthKey()){
            $result = $this->execGetAuthKey();
            if($result !== 0){
                echo "AuthenticationKeyの取得に失敗しました。\n";
                return false;
            }
        }
        $authkeyjson = file_get_contents($this->auth_file);
        if($authkeyjson === false || empty($authkeyjson)){
            echo "AuthenticationKeyの読み込みに失敗しました。\n";
            $this->deleteAuthKey();
            return false;
        }
        $authkey = json_decode($authkeyjson, true);
        if(empty($authkey['userid']) || empty($authkey['authkey'])){
            echo "AuthenticationKeyの読み込みに失敗しました。\n";
            $this->deleteAuthKey();
            return false;
        }
        return $authkey;
    }
}
?>

実行例:

$ php WAGRI_checkAuth.php    
$ php checkAuth_token.php
前に戻る
上部へスクロール