跳至內容
從 NextAuth.js v4 遷移?請閱讀 我們的遷移指南.

providers/netsuite

內建的 NetSuite 整合。

NetSuiteProfile

屬性

contact?

optional contact: number;

department?

optional department: number;

email

email: string;

id

id: number;

location

location: number;

name

name: string;

role

role: number;

roleCenter?

optional roleCenter: string;

roleId?

optional roleId: string;

subsidiary?

optional subsidiary: number;

OAuthNetSuiteOptions

屬性

accountID

accountID: string;

例如:TSTDRV1234567 或生產環境的 81555

prompt

prompt: string;

提示選項 - 也可於下方查看

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

authorization.params.prompt

選用的 prompt 參數提供額外的控制,以決定何時顯示登入/同意畫面。以下是您可以與 prompt 參數搭配使用的值:「none」- 不會顯示同意畫面。如果沒有啟用的工作階段,應用程式會傳回錯誤。「login」- 即便有啟用的工作階段,使用者也必須驗證身分。只有在應用程式將請求傳送至帳戶特定的網域時,此選項才有效。「consent」- 每次都會顯示同意畫面。如果沒有啟用的工作階段,使用者必須驗證身分。login consent 或 consent login - 每次都會顯示同意畫面,而且即便有啟用的工作階段,使用者也必須驗證身分,並允許連線至 NetSuite。與 GitHub、Google 和 Facebook 的資料同意畫面類似。

scope

scope: string;

restlets rest_webservices 或 restlets 或 rest_webservices suiteanalytics_connect restlets

userinfo

userinfo: string;

可以是返回執行階段資訊或記錄資訊的 restlet 或 suitelet -> 建議使用 RESTLet


default()

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

將 NetSuite 登入新增至您的頁面並向其發出請求

設定

免責聲明

使用此提供者,即表示您同意與 NetSuite 分享您的資料。使用此提供者,即表示您同意 NetSuite 的服務條款隱私權政策。此提供者的作者與 NetSuite 沒有關聯。繼續使用此提供者,您必須是 NetSuite 客戶,而且擁有 NetSuite 帳戶(完整存取權使用者)。確保您的 NetSuite 帳戶中已啟用 OAuth 2.0 功能,並在目前角色/使用者上設定正確的權限

在設定提供者之前,您需要

  • 建立整合記錄
    • 取消勾選 TBA 驗證流程核取方塊。
    • 勾選 OAuth 2.0 驗證流程核取方塊。
    • 將下方的 回調網址 複製並貼到 重新導向 URI 欄位中。
    • 然後選取您要使用的範圍。
      • REST Web Services (rest_webservices) - 存取 REST Web Services。
      • RESTlet(restlets) - 存取 RESTLet。
      • SuiteAnalytics Connect (suiteanalytics_connect) - 存取 SuiteAnalytics Connect。
    • 新增您要使用的任何原則。
      • 應用程式標誌 (選用)(在要求使用者授與應用程式存取權時顯示給使用者)。- 同意畫面
      • 應用程式使用條款 (選用) - 包含應用程式使用條款的 PDF 檔案。- 同意畫面
      • 應用程式隱私權政策 (選用) - 包含應用程式隱私權政策的 PDF 檔案。- 同意畫面
    • OAuth 2.0 同意原則偏好設定 - 此設定決定是否在使用者每次登入時、僅在首次登入時或永不要求使用者授與應用程式存取權。
    • 儲存整合記錄。
    • 整合記錄將用於產生提供者的 clientIdclientSecret儲存產生的值以供稍後使用

回調網址

💡

在整合記錄中設定重新導向 URI 時,您必須使用 https 通訊協定。否則,您在嘗試登入時會收到錯誤。(INVALID_LOGIN_ATTEMPT)。如果您在本地測試,可以使用像 ngrok 這類的服務來建立連線至您 localhost 的安全通道。

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

我們的 userinfo 需要由一個 suitelet 或 RESTLet 網址組成,該網址提供我們關於使用者的資訊。這必須非常快,因為交握設定檔收集執行不能花費太長時間。最好的方法是先使用 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 繼承 NetSuiteProfile

參數

參數類型
configOAuthUserConfig<P> & OAuthNetSuiteOptions

傳回

OAuthConfig<P>

Auth.js © Balázs Orbán 和團隊 -2024