为 Sinch Android 和 IOS 客户端创建身份验证票证 (Nodejs)

Create authentication ticket for Sinch Android And IOS client (Nodejs)

我在使用 Nodejs 为 Android 和 IOS 客户端创建 Sinch 身份验证票时遇到问题。我尝试了 sinch-ticketgen NPM 模块,但它只为 java 脚本生成票证,我们不能将此票证用于 Android 和 IOS 客户端。

以下是我用于生成票证的代码片段,但它不起作用,

const crypto = require('crypto');
const shasum = crypto.createHash('sha1');

const key = '0b25bb2d-f5dd-4337-9f99-a318196f886a';
const secret = 'm1aur2Q4FUWWNuMlKq3KKg==';
const userId = 'sanket';
const sequence = 0;

const stringToSign = userId + key + sequence + secret;

shasum.update(stringToSign);

const singnature = shasum.digest('utf8'); //utf8
console.log('Signature ', singnature.toString('base64'));
const token = singnature.toString('base64').trim();

console.log(token);

票据生成的伪代码在 https://www.sinch.com/docs/voice/ios/#applicationauthentication

中给出

我尝试了 java 示例,它工作正常,但没有找到我在 Nodejs 票证创建中出错的地方。

以下是它的有效 Nodejs 代码段。

    const crypto = require('crypto');
    const shasum = crypto.createHash('sha1');

    const key = '0b25bb2d-f5dd-4337-9f99-a318196f886a';
    const secret = 'm1aur2Q4FUWWNuMlKq3KKg==';
    const userId = 'sanket';
    const sequence = 0;

    const stringToSign = userId + key + sequence + secret;

    shasum.update(stringToSign);

    const singnature = shasum.digest();
    console.log('Signature ', singnature.toString('base64'));
    const token = singnature.toString('base64').trim();

    console.log(token);