コンテンツへスキップ
NextAuth.js v4からの移行?こちらを ご確認ください。.

providers/netsuite

ビルトインのNetSuite統合。

NetSuiteProfile

プロパティ

連絡先?

optional contact: number;

部署?

optional department: number;

メールアドレス

email: string;

ID

id: number;

所在地

location: number;

名前

name: string;

ロール

role: number;

ロールセンター?

optional roleCenter: string;

ロールID?

optional roleId: string;

子会社?

optional subsidiary: number;

OAuthNetSuiteOptions

プロパティ

アカウントID

accountID: string;

例:TSTDRV1234567 または本番環境の場合は 81555

プロンプト

prompt: string;

プロンプトオプション - 以下にも表示されています。

https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_160855585734.html

authorization.params.prompt

オプションのプロンプトパラメーターを使用すると、ログイン/同意画面が表示されるタイミングをさらに制御できます。プロンプトパラメーターで使用できる値を以下に示します。「none」 - 同意画面は表示されません。アクティブなセッションがない場合、アプリケーションはエラーを返します。「login」 - アクティブなセッションがあっても、ユーザーは認証する必要があります。このオプションは、アプリケーションがアカウント固有のドメインにリクエストを送信する場合にのみ機能します。「consent」 - 同意画面は毎回表示されます。アクティブなセッションがない場合は、ユーザーは認証する必要があります。login consent または consent login - 同意画面は毎回表示され、アクティブなセッションがあってもユーザーは認証する必要があり、NetSuiteへの接続を許可します。GitHub、Google、Facebookのデータ同意画面に似ています。

スコープ

scope: string;

restlets rest_webservices または restlets または rest_webservices suiteanalytics_connect restlets

ユーザー情報

userinfo: string;

ランタイム情報またはレコード情報を返すRESTletまたはSuitelet - RESTletを推奨


デフォルト()

default<P>(config): OAuthConfig<P>

Netsuiteログインをページに追加し、以下のリクエストを行います。

設定

免責事項

このプロバイダーを使用することにより、お客様はNetSuiteとデータの共有に同意するものとします。このプロバイダーを使用することにより、お客様はNetSuiteのサービス利用規約およびプライバシーポリシーを遵守することに同意するものとします。このプロバイダーの作者はNetSuiteと提携していません。このプロバイダーを使用するには、NetSuiteのお客様であり、NetSuiteアカウント(フルアクセスユーザー)を持っている必要があります。 **NetSuiteアカウントでOAuth 2.0機能が有効になっており、現在のロール/ユーザーに適切な権限が設定されていることを確認してください。**

プロバイダーを設定する前に、以下の手順が必要です。

  • 統合レコードの作成
    • TBA認証フローのチェックを外します。
    • OAuth 2.0認証フローをチェックします。
    • 下記のCallback URLRedirect URIフィールドにコピーアンドペーストします。
    • 次に、使用するスコープを選択します。
      • **REST Webサービス** (rest_webservices) - REST Webサービスへのアクセス。
      • **RESTLets**(restlets) - RESTLetsへのアクセス。
      • **SuiteAnalytics Connect** (suiteanalytics_connect) - SuiteAnalytics Connectへのアクセス。
    • 使用するポリシーを追加します。
      • アプリケーションロゴ(オプション)(ユーザーがアプリケーションへのアクセスを許可するように求められたときにユーザーに表示されます)。- 同意画面
      • アプリケーション利用規約(オプション)- アプリケーションの利用規約を含むPDFファイル。- 同意画面
      • アプリケーションプライバシーポリシー(オプション)- アプリケーションのプライバシーポリシーを含むPDFファイル。- 同意画面
    • OAuth 2.0同意ポリシー設定 - この設定は、ユーザーがサインインするたびに、または初めてサインインする場合にのみ、または決してアプリケーションへのアクセスを許可するように求められるかどうかを決定します。
    • 統合レコードを**保存**します。
    • 統合レコードを使用して、プロバイダーのclientIdclientSecretを生成します。 **生成された値は後で保存してください。**

コールバックURL

💡

統合レコードでリダイレクトURIを設定する際、httpsプロトコルを使用する必要があります。それ以外のプロトコルを使用すると、サインイン時にエラー(INVALID_LOGIN_ATTEMPT)が発生します。ローカルでテストする場合は、ngrokなどのサービスを使用して、localhostへの安全なトンネルを作成できます。

https://example.com/api/auth/callback/netsuite
💡

当社のuserinfoは、ユーザーに関する情報を提供するスイートレットまたはRESTletのURLで構成されている必要があります。ハンドシェイクプロファイルの収集実行に時間がかからないように、非常に高速である必要があります。まず基本情報を取得するには、N/runtimeモジュールを使用するのが最善です。以下にRESTletの例を示します。「すべてのロール」へのアクセスをデプロイして有効にすることを確認してください。

RESTletコールバックハンドラの例

URIを使用する場合は必ず、外部RESTlet URLをデプロイして使用してください。

* /**
* @NApiVersion 2.1
* @NScriptType Restlet
*/
define(["N/runtime"], /**
 @param{runtime} runtimee
/ (runtime) => {
 /**
  * Defines the function that is executed when a GET request is sent to a RESTlet.
  * @param {Object} requestParams - Parameters from HTTP request URL; parameters passed as an Object (for all supported
  *     content types)
  * @returns {string | Object} HTTP response body; returns a string when request Content-Type is 'text/plain'; returns an
  *     Object when request Content-Type is 'application/json' or 'application/xml'
  * @since 2015.2
  */
  const get = (requestParams) => {
    let userObject = runtime.getCurrentUser();
 
    try {
      log.debug({ title: "Payload received:", details: requestParams });
 
      const { id, name, role, location, email, contact } = userObject;
 
      log.audit({ title: "Current User Ran", details: name });
 
      let user = {
        id,
        name,
        role,
        location,
        email,
        contact,
      };
 
      log.debug({ title: "Returning user", details: user });
 
      return JSON.stringify(user);
    } catch (e) {
      log.error({ title: "Error grabbing current user:", details: e });
    }
  };
 
  return {
    get,
  };
);

注記:上記は、基本的なランタイム情報を返す例です。新しいスクリプトレコードとデプロイメントレコードを作成してください。デプロイメントレコードを保存すると、RESTletのURLを取得できます。

設定

import { Auth } from "@auth/core"
import Netsuite from "@auth/core/providers/netsuite"
 
const request = new Request(origin)
const response = await Auth(request, {
  providers: [
      NetSuite({
        accountID: NETSUITE_ACCOUNT_ID, // EX: TSTDRV1234567 or 81555 for prod, and 1234567-SB1 for Sandbox accounts not "_" use "-".
       // Returns the current user using the N/runtime module. This url can be a suitelet or RESTlet (Recommended)
       // Using getCurrentUser(); So we match this schema returned from this RESTlet in the profile callback. (Required)
        userinfo: "https://1234567.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=123&deploy=1",
      })
  ],
})

リソース

注記

💡

userinfoがプロファイルコールバックの戻り値の型と一致することを確認し、ユーザーセッションが正しく読み取られるようにします。ユースケースのデフォルト値をオーバーライドするには、組み込みOAuthプロバイダーのカスタマイズを確認してください。

型パラメータ

型パラメータ
P extends NetSuiteProfile

パラメータ

パラメータ
configOAuthUserConfig<P> & OAuthNetSuiteOptions

戻り値

OAuthConfig<P>

Auth.js © Balázs Orbán and Team -2024