公司项目需要接入sign in with Apple,花了几天时间,查看各种文档博客,最终完成接入。
客户端接入遇到的一些问题
1.首次登录时调用的代码:
if (@available(iOS 13.0, *)) {
// 基于用户的Apple ID授权用户,生成用户授权请求的一种机制
ASAuthorizationAppleIDProvider *appleIDProvider = [[ASAuthorizationAppleIDProvider alloc] init];
// 创建新的AppleID 授权请求
ASAuthorizationAppleIDRequest *appleIDRequest = [appleIDProvider createRequest];
// 在用户授权期间请求的联系信息
appleIDRequest.requestedScopes = @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail];
// 由ASAuthorizationAppleIDProvider创建的授权请求 管理授权请求的控制器
ASAuthorizationController *authorizationController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[appleIDRequest]];
// 设置授权控制器通知授权请求的成功与失败的代理
authorizationController.delegate = self;
// 设置提供 展示上下文的代理,在这个上下文中 系统可以展示授权界面给用户
authorizationController.presentationContextProvider = self;
// 在控制器初始化期间启动授权流
[authorizationController performRequests];
}else{
// 处理不支持系统版本,ios13以下使用sign in with Apple web登录
NSLog(@"the os version less than 13.0,SignInWithApple web");
UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController;
if (vc.parentViewController) {
vc = vc.parentViewController;
}
GmSdkSignInWithAppleViewController *signInWithAppleWeb = [[GmSdkSignInWithAppleViewController alloc]init];
signInWithAppleWeb.modalPresentationStyle = UIModalPresentationFullScreen;
UINavigationController *controller = [[UINavigationController alloc]initWithRootViewController:signInWithAppleWeb