如何在iOS之外创建Apple音乐用户令牌

8
我正在尝试让人们从网页上喜欢Apple Music的曲目、专辑或播放列表。我理解这个页面上的说明:https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/AppleMusicWebServicesReference/SetUpWebServices.html,但直到我应该使用 SKCloudServiceController 中的 requestUserToken(forDeveloperToken:completionHandler:) 方法时遇到了问题,因为 StoreKit 框架没有在 iOS/macOS/tvOS 之外提供。这个 token 是如何生成的?我能手动生成这个音乐用户令牌吗?虽然很难,但也许有人已经搞定了!

可以从这里生成令牌:https://www.example-code.com/swift/jwt_ecc_create.asp,即使它使用ES256加密,但它接受pem文件,而苹果提供的是p8格式文件。我已经搜索了很多,但没有找到将p8文件转换为pem的解决方案。 - TechValens
2个回答

5
新的Apple MusicKit JS库允许您从开发人员令牌创建音乐用户令牌,如此处所示,可以在iOS之外使用。加载库后,您可以使用authorize方法允许用户进行身份验证并生成令牌。
document.addEventListener('musickitloaded', function() {
  // MusicKit global is now defined
  MusicKit.configure({
    developerToken: 'DEVELOPER-TOKEN',
    app: {
      name: 'My Cool Web App',
      build: '1978.4.1'
    }
  });

  let music = MusicKit.getInstance();

  music.authorize().then(musicUserToken => {
    console.log(musicUserToken);
  });
});

如果我想为每个用户将此令牌保存到数据库中,那么这个令牌需要加密吗? - zerohedge
它对我返回“未定义”。 - Pradeep Singh
我已经尝试了所有方法,如“'music.musicUserToken'”,但对我仍然不起作用。 - Pradeep Singh
我制作了一个基本的示例来设置js sdk 这里。一旦配置完成,music变量应该在控制台中可用,您可以运行以下代码进行登录: music.authorize().then(musicUserToken => { console.log(musicUserToken); }); 您需要一个Apple Music帐户才能登录。希望这可以帮助到您。 - Kole Myers
@KoleMyers 你好,我正在尝试授权用户,但是在登录后什么也没有发生。只显示一个空白窗口。 - Degard
@Degard - 嗯,看起来对我仍然有效。你是在尝试我链接的那个 Github 项目中的设置吗?如果是,请在该项目上打开一个问题,并提供您的详细信息,我会尝试解决它。 - Kole Myers

1

我已经尝试了这种方法在我的iOS应用程序中。

您可以点击以下链接生成音乐令牌

这基本上是一个Python脚本。你可以轻松地从你的Mac上创建一个音乐开发者令牌。


1
{btsdaf} - Reinier
@Reinier,@AbdulYasin - 这个功能是否允许在美国以外生成用户令牌呢? - zerohedge
@AbdulYasin 感谢您的回答。我指的是用户令牌而不是开发者令牌。您能否展示如何在答案中完成这个操作?我的意思是,在获取他们的令牌之前,您在哪里提示用户输入凭据?注意:我不是在谈论iOS。我说的是一个Web应用程序。 - zerohedge
@zerohedge,您会发现上面的链接非常有用。要生成用户令牌(MusicKit私钥在*.p8文件中,Apple开发者帐户中的10位数字密钥标识符和您的10位数字Apple开发者帐户团队ID),您可以访问Apple会员中心。如果您有会员帐户,可以继续生成这些内容。 - Abdul Yasin
@AbdulYasin 我已经去过那里,但我仍然不清楚如何从Python Web应用程序中识别例如在iPhone上使用Apple Music的Windows用户。无论如何感谢您的帮助。 - zerohedge
这个回答是错误的,因为它生成的是开发者令牌而不是用户令牌。开发者令牌只是一个跳板,它标识了哪个客户端应用在请求,而用户令牌允许客户端通过特定帐户访问服务。 - w0mbat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接