Lingara Lingara ドキュメント 学習ガイド API ライブラリ アプリ 作成 ウェブ版
言語: 日本語

認証

このページは英語から翻訳されています。内容に相違がある場合は、英語のページが正しい内容です。 英語のページを読む

OAuth クライアントのクライアント ID とクライアントシークレットを使ってクライアントを作成します。あとはライブラリが処理します。アクセストークンを求められることはありません。

ライブラリが代わりに行うこと

  • 交換は 1 回だけで、共有される。 トークンを必要とする最初の呼び出しが、認証情報をトークンと交換します。複数の呼び出しが同時に始まっても、それぞれが個別に交換を始めるのではなく、全員がその 1 回の交換を待ちます。
  • 期限切れ間近までキャッシュ。 トークンは有効期限の 60 秒前まで再利用され、その後の次の呼び出しで置き換えられます。バックグラウンドでの更新は行われないため、アイドル状態のプロセスはリクエストを送信しません。
  • 401 では 1 回だけ再試行。 API がトークンを拒否すると、ライブラリはそのトークンを破棄し、新しいトークンを取得して呼び出しを 1 回だけ繰り返します。2 回目の 401 は API エラーとして送出されます。
  • 交換には時間制限がある。 応答のないトークンリクエストは 30 秒後に失敗するため、遅いトークンエンドポイントがすべての呼び出し元を引き止めることはありません。
  • 漏れるものはない。 クライアントシークレットとすべてのアクセストークンは、ログ、デバッグ出力、エラーメッセージの中で [REDACTED] と表示されます。

API バージョンの一覧取得など、トークンを必要としない操作ではトークンが送信されないため、認証情報なしで作成したクライアントでも呼び出せます。

シークレットはサーバーに置く

クライアントシークレットが識別するのはユーザーではなく、あなたのアプリケーションです。サーバーの設定やシークレットストアに保管し、ブラウザーやモバイルアプリには決して含めないでください。

コード例の言語

TypeScript

import { Lingara } from "@lingara/api";

const client = new Lingara({
  clientId: process.env.LINGARA_CLIENT_ID!,
  clientSecret: process.env.LINGARA_CLIENT_SECRET!,
});

Rust

use lingara::Client;

let client = Client::builder()
    .client_credentials(std::env::var("LINGARA_CLIENT_ID")?, std::env::var("LINGARA_CLIENT_SECRET")?)
    .build()?;

Go

import (
	"os"

	lingara "github.com/Spinning-Cat-Studios/lingara_api_clients/go"
)

client, err := lingara.New(
	lingara.WithClientCredentials(os.Getenv("LINGARA_CLIENT_ID"), os.Getenv("LINGARA_CLIENT_SECRET")),
)
if err != nil {
	return nil, err
}

Java

import com.getlingara.client.LingaraClient;

LingaraClient client =
    LingaraClient.builder()
        .clientCredentials(
            System.getenv("LINGARA_CLIENT_ID"), System.getenv("LINGARA_CLIENT_SECRET"))
        .build();

Kotlin

import com.getlingara.kotlin.LingaraClient

val client =
    LingaraClient {
        clientCredentials(System.getenv("LINGARA_CLIENT_ID"), System.getenv("LINGARA_CLIENT_SECRET"))
    }

Ruby

require "lingara"

client = Lingara::Client.new(client_id: client_id, client_secret: client_secret)

PHP

use Lingara\Client;

$client = new Client(clientId: $clientId, clientSecret: $clientSecret);

このページがラップするもの