微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用团队帐户生成“特定于应用程序的密码”以对应用程序进行公证?

如何解决如何使用团队帐户生成“特定于应用程序的密码”以对应用程序进行公证?

我正在尝试使用 electron-builderelectron-notarize 对 Electron 应用进行公证。文档指出需要特定于应用的密码并提供此链接Using app-specific passwords

问题在于该链接是关于为个人 Apple ID 帐户生成“应用专用密码”,而不是 Apple 开发者帐户。而且我是团队的一员,在我的个人 ADC 帐户和团队帐户的其他部分(我拥有管理员权限)中都没有位置(例如“安全”面板)。

在尝试公证时,我已经尝试了所有我能想到的 APPLEIDAPPLEIDPASS 组合:我的个人 Apple ID 和密码、团队的 Apple ID 和密码、“特定于应用程序的密码”我是在我的个人帐户中创建的。

不可能这么难。我错过了什么?

解决方法

我已经能够解决我的公证问题。我不知道这是否是“正确的方式”,但它奏效了,所以这就是我所做的 - 也许它可以为某人节省我经历的时间和挫折。

背景:我是一名承包商,对我客户的 Apple Developer 帐户具有“管理员”权限,并且拥有个人 ADC 帐户。正如我在问题中所指出的,Electron Builder 文档指出需要“特定于应用程序的密码”,并链接到有关如何生成密码的 Apple 文档。但是,该链接是或似乎是关于生成特定密码以与“Twitter”等 3rd 方应用程序一起使用 - 以便保护个人 Apple ID 密码。至少我是这样阅读的。我的个人 ADC 帐户或团队帐户中没有可以生成此类密码的地方。所以我在我的个人 ADC 帐户中生成了一个密码。

来自 Electron Builder issues 的这篇博文介绍了要传递给 notarize 的附加属性:“ProviderShortname”。如帖子中所述,可以通过以下方式访问:

xcrun altool --list-providers -u <personal APPLE ID> -p <app-specific pw generated within that acct>

这给出了成员资格列表。然后我在下面的代码中使用团队 ID 作为“ascProvider”的值:

require('dotenv').config();
const { notarize } = require('electron-notarize');

exports.default = async function notarizing(context) {
  const { electronPlatformName,appOutDir } = context;  
  if (electronPlatformName !== 'darwin') {
    return;
  }

  const appName = context.packager.appInfo.productFilename;

  return await notarize({
    appBundleId: 'com.xxx.yyy.zzz',appPath: `${appOutDir}/${appName}.app`,appleId: process.env.APPLEID,appleIdPassword: process.env.APPLEIDPASS,ascProvider: process.env.ASCPROVIDER
  });
};

应用程序成功公证(Apple 发送确认电子邮件),其余的打包工作继续进行。在公证收据“装订”到应用程序之后(在我尝试对应用程序进行公证之前没有发生这种情况),我在创建 dmg 时也遇到了一些问题。这些问题与缺少必需的“消息”和“语言”代码(在我的情况下为“en-us”)有关。我通过添加示例“Electron Builder”来解决这个问题,如下所示。

同样,我不知道这是否是处理所有这些问题的“正确方法”——但它奏效了。我想如果一个人是个人开发者而不是团队的一部分,那么样板 Electron Builder 说明就可以工作。

{
  "languageName": "English","lang": "en-us","agree": "Agree","disagree": "Disagree","print": "Print","save": "Save","description": "","message": "If you agree with the terms of this license,press 'Agree' to install the software.  If you do not agree,press 'Disagree'"
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。