Zoho Node.js SDK 身份验证问题
我正在按照 Zoho Node.js SDK npmjs 页面中的说明编写此代码。我在 Windows 10 上运行它。当它试图找到用于实例化 FileStore 的文件时,它失败了。我正在使用 Zoho Self Client 方法进行 oAuth2 身份验证。在此代码中,我只是为他们提供一个临时访问令牌,以便我可以创建一个刷新令牌,然后我将在无服务器函数中使用它从 Zoho CRM 读取数据。我的理解是 SDK 会将身份验证凭据写入 Filestore,并且会包含刷新令牌。 这在读取目录中确实存在的文件存储时失败。我对文件存储感到困惑,因为我认为 SDK 会将令牌写入此文件,而不是尝试读取它。 如果您使用过 Zoho CRM 并且可以看到问题,请分享。
import * as dotenv from 'dotenv'
dotenv.config();
console.log(process.env.ADMIN_EMAIL_ADDRESS)
import { URL } from 'url'; // in Browser, the URL in native accessible on window
// Will contain trailing slash
const absolute_path = new URL('.', import.meta.url).pathname;
console.log("dirname", absolute_path)
import * as ZOHOCRMSDK from '@zohocrm/nodejs-sdk-2.1';
class Initializer {
static async initialize() {
/*
* Create an UserSignature instance that takes user Email as parameter
*/
let user = new ZOHOCRMSDK.UserSignature(process.env.ADMIN_EMAIL_ADDRESS);
/*
* Configure the environment
* which is of the pattern Domain.Environment
* Available Domains: USDataCenter, EUDataCenter, INDataCenter, CNDataCenter, AUDataCenter
* Available Environments: PRODUCTION(), DEVELOPER(), SANDBOX()
*/
let environment = ZOHOCRMSDK.USDataCenter.PRODUCTION()
/*
* Create a Token instance
* clientId -> OAuth client id.
* clientSecret -> OAuth client secret.
* grantToken -> GRANT token.
* redirectURL -> OAuth redirect URL. Default value is null
*/
let token = new ZOHOCRMSDK.OAuthBuilder()
.clientId(process.env.SELF_CLIENT_CLIENT_ID)
.clientSecret(process.env.SELF_CLIENT_CLIENT_ID)
.grantToken(process.env.SELF_CLIENT_TEMPORARY_GRANT_TOKEN)
.redirectURL(process.env.REDIRECT_URL)
.build();
/*
* TokenStore can be any of the following
* DB Persistence - Create an instance of DBStore
* File Persistence - Create an instance of FileStore ** using this to save refresh token
* Custom Persistence - Create an instance of CustomStore
*/
const tokenstore_location = `${absolute_path}nodejs_sdk_tokens.txt`
console.log("tokenstore_location", tokenstore_location)
let tokenstore = new ZOHOCRMSDK.FileStore(tokenstore_location)
/*
* Set the following in InitializeBuilder
* user -> UserSignature instance required
* environment -> Environment instance required
* token -> Token instance required
* store -> TokenStore instance
* SDKConfig -> SDKConfig instance
* resourcePath -> resourcePath
* logger -> Logger instance. Default value is null
* requestProxy -> RequestProxy instance. Default value is null
*/
// The SDK can be initialized by any of the following methods
(await new ZOHOCRMSDK.InitializeBuilder())
.user(user)
.environment(environment)
.token(token)
.store(tokenstore)
.initialize()
.catch((err) => {
console.log(err);
});
}
}
Initializer.initialize(); Zoho
回答如下: