首页 > 解决方案 > 在 nodejs 后端上护照苹果无法解释的 invalid_client - 使用带有新凭据集的干净示例存储库

问题描述

我已经克隆了https://github.com/ananay/passport-apple-example并将配置替换为:

clientID: "com.myname.web",
teamID: "myteamid",
callbackURL: "https://myurldev.com/auth/apple/redirect",
keyID: "mykeyid",
privateKeyLocation: path.join(__dirname, "../apple-key.p8")

我还在我的机器上添加了 SSL 证书并使用 https 启动服务器,一切正常并且被我的浏览器识别。我还在端口 443 上启动应用程序并使用我的主机文件 myurl.dev.com -> 127.0.0.1 进行代理。

我为 facebook、google 和 microsoft 设置了相同的身份验证设置,一切正常。

我有:

这一次,出于某种原因,auth 根本不起作用。

如果我将 clientID 设置为 APP 标识符,而不是服务,我会得到

invalid_request
Invalid web redirect url. 

代替invalid_client

非常感谢任何有关调试的建议。谢谢你。


编辑#1:

我对 passport-apple 包进行了更深入的研究,以确定是否有任何内容违反苹果关于令牌生成的文档,但流程从未到达那部分,这表明苹果控制台中的实际配置出现问题以及我正在尝试的内容用于我的项目。


编辑#2 我创建的应用程序 ID 中的 2 个总是抛出“错误的重定向 uri”,因为它们不是服务 ID,所以我无法配置 redirect_uri,如果我将 undefined 作为 redirect_uri 传递,这将更改为“必需”。

无论我是否为 redirect_uri 传递了未定义或良好的值,其中一个应用程序 id 只会抛出无效的 client_id。


编辑#3 通过 OAuth 代码流程进行了完整的原版操作,并且刚刚创建了一个 url 并重定向了用户,使用此方法失败与使用 passport-apple 模块时发生的情况一致。


    const url = new URL("https://appleid.apple.com/auth/authorize");

    url.searchParams.append("state", "fdbd287b1f");
    url.searchParams.append("response_type", "code");
    url.searchParams.append("scope", "name email");
    url.searchParams.append("response_mode", "form_post");
    url.searchParams.append(
      "redirect_uri",
      "https://raiseitupdev.com/auth/apple/redirect",
    );
    url.searchParams.append("client_id", "com.myname.web");

    return res.redirect(url.toString());

标签: node.jspassport.jsapple-sign-in

解决方案


[这里是图书馆的创建者。]

它是否也停止了开发工作?我觉得这是一个配置错误,因为实际情况正在我的网站上运行:

https://passport-apple.ananay.dev

请跟进这个 Github 问题。谢谢! https://github.com/ananay/passport-apple/issues/23


推荐阅读