在WebAuthenticationOptions
中,redirectUri
将根据您的平台而改变。在iOS和Web上,您只需放入您的域名。在Android上,您需要传递来自您自己服务器的URI,该服务器将返回一个重定向到Android深链接。
以下是Flutter代码示例:
final credential = await SignInWithApple.getAppleIDCredential(
scopes: [AppleIDAuthorizationScopes.email],
webAuthenticationOptions: WebAuthenticationOptions(
clientId: userService.platform != "apple"
? 'com.example-service.example'
: 'com.example.example',
redirectUri: userService.platform == "android" ?
Uri.parse('https://example.com/apple/login/callback')
: Uri.parse('https://example.com')));
以下是应添加到您自己的Python服务器上的回调端点示例,使用FastAPI:
@router.post("/apple/login/callback", response_class=RedirectResponse)
async def android_siwa(request: Request):
args = ""
form = await request.form()
data = {k: v for k, v in form.items() if k != "upload-file"}
for k, v in data.items():
args += f"{k}={v}&"
args = args[:-1]
return f"intent://callback?{args}#Intent;package={settings.ANDROID_PACKAGE_NAME};scheme=signinwithapple;end"
最后,请确保在您的服务ID配置中包括这两个重定向URI:https://developer.apple.com/account/resources/identifiers/list/serviceId
重点 服务端api要接受post 请求,而不是改,接受后重定向到安卓deeplink打开安卓app