Flutter服务端Apple登录报错:client_id不匹配
解决Apple登录授权码验证时的client_id mismatch问题
问题原因
你在移动端调用sign_in_with_apple时错误复用了Web端的Service ID作为clientId。Apple登录中,原生移动端应用必须使用App ID而非Service ID,Service ID仅用于Web/网页端登录场景。这就导致授权码是由App ID签发的,但你用Service ID去验证,自然会出现不匹配错误。
解决方案
修改移动端代码的clientId
移除webAuthenticationOptions(该配置仅针对Web端场景),将clientId替换为你的App IDcom.website.login,原生移动端的正确调用方式如下:credentials = await SignInWithApple.getAppleIDCredential( scopes: scopes, clientId: 'com.website.login', // 替换为移动端App ID state: state, );确认Apple开发者后台配置
- 确保你的App ID(
com.website.login)已开启「Sign In with Apple」功能 - 确认你用于生成授权码的密钥,已关联该App ID的Sign In with Apple服务
- 确保你的App ID(
服务端验证时匹配对应clientId
服务端验证授权码时,要根据登录场景使用对应的clientId:- 移动端登录的授权码,用App ID
com.website.login验证 - Web端登录的授权码,用Service ID
com.website.service.login验证
- 移动端登录的授权码,用App ID
内容的提问来源于stack exchange,提问作者dtandon
相关产品推荐
相关产品推荐

