Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将aps.cer文件用于Node.js的APN(推送通知)?_Javascript_Ios_Node.js_Apple Push Notifications_Node Apn - Fatal编程技术网

Javascript 如何将aps.cer文件用于Node.js的APN(推送通知)?

Javascript 如何将aps.cer文件用于Node.js的APN(推送通知)?,javascript,ios,node.js,apple-push-notifications,node-apn,Javascript,Ios,Node.js,Apple Push Notifications,Node Apn,我在node.js发送推送通知时遇到问题,我想是因为我在apple开发者帐户中生成的APN证书有问题。我从Node.js得到这个错误 VError: Failed to generate token: error:0906D06C:PEM routines:PEM_read_bio:no start line 我不确定我是否在apple开发者帐户中生成了正确的文件。请参见下面的屏幕截图,当我单击下载时,它会给我一个“aps.cer”文件,这是我在node.js项目中放入并与node app模块

我在node.js发送推送通知时遇到问题,我想是因为我在apple开发者帐户中生成的APN证书有问题。我从Node.js得到这个错误

VError: Failed to generate token: error:0906D06C:PEM routines:PEM_read_bio:no start line
我不确定我是否在apple开发者帐户中生成了正确的文件。请参见下面的屏幕截图,当我单击下载时,它会给我一个“aps.cer”文件,这是我在node.js项目中放入并与node app模块一起使用的文件。下面是我如何在我的代码中设置它:

let options = {
        token: {
            key: "aps.cer",
            keyId: "singlemeout.Single-Me-Out",
            teamId: "Team Name"
        },
        production: false
    };
这是我的证书的屏幕截图


在使用证书时,您正在为节点apn提供基于令牌的配置

如果要继续使用证书,请执行以下操作:

  • 证书应采用PEM格式

    您可以按如下方式进行转换:

    openssl x509 -inform DER -in aps.cer -out certificate.pem
    
  • 您需要提供密钥,或者将其添加到证书中,或者将其作为单独的文件提供

  • 您需要在配置对象中使用
    cert
    key
    和或
    pfx
    属性,而不是
    token.key

    let options = {
            cert: "certificate.pem",
            key: "privatekey.pem"
        };
    
或者,您可以切换到使用令牌

有关详细信息,请参阅


另外,您的
产品
属性与使用的证书不一致。

谢谢您的回复。我有几个问题;我使用什么文件作为“密钥”文件,这是我拥有的原始aps.cer文件吗?还是另一个文件?另外,在生成“certificate.pem”文件后,如何在节点代码中定义options变量?像这样的?let options={token:{keyId:“singlemeout.singleme Out”,teamId:“Team Name”},cert:“certificate.pem”,production:true};与上载以获取证书的证书请求同时生成的私钥。我不使用标准的Apple程序,也不使用openssl生成它,但它应该在您的密钥链中,您需要导出它。我已经更新了答案,以便更明确地说明您应该如何指定证书和密钥文件名。好的,我在我的密钥链中找到了Apple Push Services证书,我将其作为.pem导出到我的项目目录中,但现在在运行节点时出现此错误。错误:错误:0906D06C:PEM例程:PEM_read_bio:no start line我实际上查看了这两个文件,并且我的密钥链中的文件与certificate.PEM文件相同(这是我使用openssl转换为.PEM的.cer)。需要导出的不是证书,而是私钥。或者两者同时进行。