【问题标题】:Translate signature generation code from PHP to Javascript (nodejs)将签名生成代码从 PHP 转换为 Javascript (nodejs)
【发布时间】:2018-11-26 08:45:11
【问题描述】:

我正在使用 zoom.us API,我需要在服务器端为 Web 客户端生成签名。他们只提供了一个 PHP 示例来说明如何做到这一点。有人可以将此代码翻译成 Javascript,以便我可以在我的 nodejs 服务器中使用它吗?

//PHP example code
function generate_signature ( $api_key, $api_sercet, $meeting_number, $role){

  $time = time() * 1000; //time in milliseconds (or close enough)

  $data = base64_encode($api_key . $meeting_number . $time . $role);

  $hash = hash_hmac('sha256', $data, $api_sercet, true);

  $_sig = $api_key . "." . $meeting_number . "." . $time . "." . $role . "." . base64_encode($hash);

  //return signature, url safe base64 encoded
  return rtrim(strtr(base64_encode($_sig), '+/', '-_'), '=');
}

【问题讨论】:

  • 为什么要使用 ajax 将结果从 php 获取到 javascript?
  • 有人可以将此代码翻译成 Javascript,如果您付钱给他们。 SO 是一个帮助解决编码问题的人而不是编码服务的网站。

标签: javascript php node.js


【解决方案1】:
const crypto = require('crypto') // crypto comes with Node.js

function generateSignature(apiKey, apiSecret, meetingNumber, role) {

  // Prevent time sync issue between client signature generation and zoom 
  const timestamp = new Date().getTime() - 30000
  const msg = Buffer.from(apiKey + meetingNumber + timestamp + role).toString('base64')
  const hash = crypto.createHmac('sha256', apiSecret).update(msg).digest('base64')
  const signature = Buffer.from(`${apiKey}.${meetingNumber}.${timestamp}.${role}.${hash}`).toString('base64')

  return signature
}

// pass in your Zoom JWT API Key, Zoom JWT API Secret, Zoom Meeting Number, and 0 to join meeting or webinar or 1 to start meeting
console.log(generateSignature(process.env.API_KEY, process.env.API_SECRET, 123456789, 0))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-19
    • 2021-12-24
    • 2019-10-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多