passport-apple在nodejs后端不可解释的invalidclient——使用带有新凭据集的干净示例存储库



我已经克隆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.

我有相同的身份验证设置为脸书,谷歌&微软和一切都很好。

我有:

  • 创建了一个新的应用程序标识符,并为其启用了与苹果的登录,命名为com.myname.dev
  • 创建了一个新的SERVICE标识符,并启用了与苹果的登录,称为:com.myname.web
  • 添加";https://myurldev.com/auth/apple/redirect"到";回复URLS";在服务标识符com.myname.web上
  • 将我的应用程序标识符com.myname.dev设置为我的服务要分组的主应用程序标识符
  • 创建了一个私钥并启用了与苹果的登录,接口确认了与创建密钥的com.myname.dev捆绑在一起的分组ID com.myname.web的存在
  • 我已经使用console.log确认了私钥确实在作为参数传递的路径上
  • 将.p8文件转换为base64&然后返回UTF-8,尝试将字符串用于privateKeyString
  • 过去曾多次使用passport Apple成功实现Apple Oauth

这一次,由于某种原因,身份验证根本不起作用。

如果我将clientID设置为应用程序标识符,而不是服务,我将获得

invalid_request
Invalid web redirect url. 

而不是invalid_client

如有任何关于调试的建议,我们将不胜感激。非常感谢。


编辑#1:

我对passport-apple软件包进行了更深入的研究,以确定在代币生成方面是否有任何违反苹果文档的地方,但流程从未达到这一部分,这表明苹果控制台的实际配置出现了问题;我想在我的项目中使用什么。


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

其中一个应用程序id只抛出无效的client_id,而不管我为redirect_uri传递了未定义的值还是良好的值。


编辑#3在OAuth代码流过程中进行了充分的香草化处理,并创建了一个url&重定向了用户it,使用此方法失败与使用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());

[此处为库的创建者。]

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

https://passport-apple.ananay.dev

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

相关内容

最新更新