跳至内容
从 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 Auth Flow 复选框。
    • 选中 OAuth 2.0 Auth Flow 复选框。
    • 将下面的 Callback URL 复制并粘贴到 Redirect URI 字段中。
    • 然后选择您要使用的范围。
      • REST Web Services (rest_webservices) - 访问 REST Web Services。
      • RESTlets(restlets) - 访问 RESTLets。
      • SuiteAnalytics Connect (suiteanalytics_connect) - 访问 SuiteAnalytics Connect。
    • 添加您要使用的任何策略。
      • 应用程序徽标(可选)(在要求用户授予对您的应用程序的访问权限时显示给用户)。 - 同意屏幕
      • 应用程序使用条款(可选) - 包含您应用程序使用条款的 PDF 文件。 - 同意屏幕
      • 应用程序隐私政策(可选) - 包含您应用程序隐私政策的 PDF 文件。 - 同意屏幕
    • OAuth 2.0 同意策略首选项 - 此设置决定是否在用户每次登录时或仅在用户首次登录时或从不向用户询问是否授予对您应用程序的访问权限。
    • 保存集成记录。
    • 集成记录将用于生成提供者的 clientIdclientSecret保存生成的値以备后用

回调 URL

💡

在集成记录中设置重定向 URI 时,您必须使用 https 协议。否则,您在尝试登录时将收到错误消息 (INVALID_LOGIN_ATTEMPT)。如果您在本地进行测试,可以使用像 ngrok 这样的服务,为您的本地主机创建安全的隧道。

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

我们的 userinfo 需要包含一个 Suitelet 或 RESTLet URL,该 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 扩展 NetSuiteProfile

参数

参数类型
configOAuthUserConfig<P> & OAuthNetSuiteOptions

返回值

OAuthConfig<P>

Auth.js © Balázs Orbán 和团队 -2024